① 如何用c語言產生一定范圍內的隨機數
利用srand((unsigned int)(time(NULL))是一種方法,因為每一次運行程序的時間是不同的。
在C語言里所提供的隨機數發生器的用法:現在的C編譯器都提供了一個基於ANSI標準的偽隨機數發生器函數,用來生成隨機數。它們就是rand()和srand()函數。這二個函數的工作過程如下:
1) 首先給srand()提供一個種子,它是一個unsigned int類型,其取值范圍從0~65535;
2) 然後調用rand(),它會根據提供給srand()的種子值返回一個隨機數(在0到32767之間)
3) 根據需要多次調用rand(),從而不間斷地得到新的隨機數;
4) 無論什麼時候,都可以給srand()提供一個新的種子,從而進一步「隨機化」rand()的輸出結果。
下面是0~32767之間的隨機數程序:
#include <stdlib.h>
#include <stdio.h>
#include <time.h> // 使用當前時鍾做種子
void main(void)
{int i;
srand((unsigned)time( NULL ) ); // 初始化隨機數
for(i = 0; i < 10;i++) // 列印出 10 個隨機數
printf("%d ", rand() );
}
根據上面的程序可以很容易得到0~1之間的隨機數:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int main( )
{int i;
srand((unsigned)time( NULL ) );
for(i = 0; i < 10;i++)
printf("%5.2f ", rand()/32767.0);
}
而產生1~100之間的隨機數可以這樣寫:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int main( )
{int i;
srand((unsigned)time( NULL ) );
for(i = 0; i < 10;i++)
printf("%d ", rand()%100+1);
}
(1)c語言會隨機數嗎擴展閱讀:
C語言高效編程技巧:
一:以空間換時間
計算機程序中最大的矛盾是空間和時間的矛盾,那麼,從這個角度出發逆向思維來考慮程序的效率問題
二:數學方法解決問題
數學是計算機之母,沒有數學的依據和基礎,就沒有計算機發展,所以在編寫程序的時候,採用一些數學方法會對程序的執行效率有數量級的提高。
三:使用位操作
實現高效的C語言編寫的第三招----使用位操作,減少除法和取模的運算。
在計算機程序中,數據的位是可以操作的最小數據單位,理論上可以用「位運算」來完成所有的運算和操作。一般的位操作是用來控制硬體的,或者做數據變換使用,但是,靈活的位操作可以有效提高程序運行的效率。
② c語言中隨機數怎樣寫
C語言
函數
名rand()
簡介
功
能::偽
隨機數
發生器
所屬庫:stdlib.h
用
法:
需要先調用srand
初始化
,一般用當前
日歷時間
初始化隨機數種子,這樣每次執行
代碼
都可以產生不同的隨機數。
函數原型:int
rand(void);
相關函數:srand、time、GetTickCount
程序例
1:
#include
"stdio.h"
#include
"stdlib.h"
int
main(void)
{
int
i;
printf("Ten
random
numbers
from
0
to
99\n\n");
for(i=0;
i<10;
i++)
printf("%d\n",
rand()
%
100);
return
0;
}
例1程序在每次
運行時
都會生成相同的十個
偽隨機數
,如要每次生成的隨機數不同應結合srand函數和
time函數
。
///////////////////
int
i,a;
for(i=0;i<3;i++)
{
a=rand()%9;
printf("%d",a);
}
③ c語言隨機數函數是什麼
C語言隨機函數主要用於實現一組隨機數的生成。
代碼示例如下:
#include<stdio.h>
#include<stdlib.h>
int main ()
{
int a;
a=rand()%4;
printf("%d ",a);
return 0;
}
C預先生成一組隨機數,每次調用隨機函數時從指針所指向的位置開始取值,因此使用rand()重復運行程序產生的隨機數都是相同的,可以通過srand()函數來改變指針位置。
(3)c語言會隨機數嗎擴展閱讀:
C語言隨機函數指針位置
void srand( unsigned int seed )
改變隨機數表的指針位置(用seed變數控制)。一般配合time(NULL)使用,因為時間每時每刻都在改變,產生的seed值都不同。
基於毫秒級隨機數產生方法:
#include<windows.h>
種子設為:srand(unsigned int seed);
srand(GetTickCount());
參考資料:網路-C語言隨機函數
④ C語言生成隨機數的函數,為什麼循環後隨機數都一樣
srand()函數是初始化隨機數產生器,它產生隨機數種子,說白了就是初始化隨機數。
srand((unsigned)time(0));取的是系統時間,也就是距離1970.1.1午夜有多少秒。而for循環每循環一次時間遠遠小於1秒,這就導致了srand((unsigned)time(0))產生的種子並沒有改變。 那麼,相同的隨機數種子所產生的隨機數肯定是一樣的了。
(4)c語言會隨機數嗎擴展閱讀:
C語言產生隨機數的方法:
1,在C語言中,rand()函數可以用來產生隨機數,但是這不是真真意義上的隨機數,是一個偽隨機數,是根據一個數,可以稱它為種子,為基準以某個遞推公式推算出來的一系數,當這系列數很大的時候,就符合正態公布,從而相當於產生了隨機數。
2,C語言中的隨機函數random,可是random函數並不是ANSI C標准,所以說,random函數不能在gcc,vc等編譯器下編譯通過。
3,rand()會返回一隨機數值,范圍在0至RAND_MAX 間。返回0至RAND_MAX之間的隨機數值,RAND_MAX定義在stdlib.h,(其值至少為32767)我運算的結果是一個不定的數,要看你定義的變數類型,int整形的話就是32767。
4,在調用此函數產生隨機數前,必須先利用srand()設好隨機數種子,如果未設隨機數種子,rand()在調用時會自動設隨機數種子為1。一般用for語句來設置種子的個數。
⑤ C語言中怎樣生成隨機數
C語言生成
隨機數
的
函數
為rand。
1
聲明:
int
rand(void);
2
頭文件:
stdlib.h
3
功能:
獲取一個非負隨機
數值
。
4
注意事項:
a)
rand是
偽隨機數
,由一個種子計算得來。
如果種子相同,每次啟動
程序
,獲取到的
隨機序列
是固定的。
可以通過srand設置當前時間作為種子,使隨機效果更好。
srand(time(NULL));
b)
要獲取[m,n]范圍的隨機數,可以使用代碼
rand()%(n-m+1)+m
⑥ c語言,如何產生隨機數
1、第一步,先定義int一個數組和int一個指針變數。
⑦ C語言怎樣產生一定范圍的隨機數
在C語言中,rand()函數可以用來產生隨機數,但是這不是真真意義上的隨機數,是一個偽隨機數,是根據一個數,可以稱它為種子。
為基準以某個遞推公式推算出來的一系數,當這系列數很大的時候,就符合正態公布,從而相當於產生了隨機數。
C語言產生一定范圍的隨機數的源代碼如下:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i;
for(i=0; i<10; i++) //隨機產生10個數。
{
printf("%d ", rand());
}
return 0;
}
(7)c語言會隨機數嗎擴展閱讀
1、如果要隨機生成一個在一定范圍的數,你可以在宏定義中定義一個random(int number)函數,然後在main()裡面直接調用random()函數。
2、在對rand()的前三次調用中,並且此後得到的返回值仍然是在對rand()的第一批調用中所得到的其餘的返回值。因此,只有再次給srand()提供一個隨機的「種子」值,才能再次得到一個隨機數。
⑧ 在C語言中如何產生隨機數
假設要生成的隨機數是大於等於20且小於等於100的整數
#include<stdio.h>
#include<time.h>
#include<stdlib.h>
voidmain(){inta,b,x;
a=20;b=100;
srand((unsignedint)time(NULL));//用當前時間生成一個隨機數種子
x=rand()%(b-a+1)+a;
printf("得到一個隨機數:%d ",x);
}
⑨ c語言怎麼產生隨機數(不用時間種子)
隨意移動移動滑鼠,然後獲取游標的位置,肯定是一個隨機數。用函數:BOOL GetCursorPos(LPPOINT lpPoint);可以獲取游標的當前位置,如:
#include<stdio.h>
#include<windows.h>
int main()
{
POINT p;
while(1)
{
GetCursorPos(&p);
printf("%ld%ld\n",p.x,p.y);
Sleep(1000);
}
return0;
}
用話筒隨便哼幾句,然後保存為聲音文件,其中的錄音數據肯定也是隨機數。所以說,要想獲得真正的隨機數,辦法還是很多的。
⑩ C語言中隨機數是如何產生的呢
一般是偽隨機數,通過一個種子來生成偽隨機數序列,然後從序列里取數來當作隨機數
當然,一般應用可以使用一些隨機事件,如某件事發生的時刻,ad器件上讀到的雜訊電壓之類的
對偽隨機數種子進行隨機化,這樣再得到的隨機數就比較沒有規律了