當前位置:首頁 » 操作系統 » c生成隨機數的演算法

c生成隨機數的演算法

發布時間: 2022-04-30 18:04:47

① 如何用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語言生成隨機數

假設要生成的隨機數是大於等於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語言怎樣產生一定范圍的隨機數

在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;

}

(3)c生成隨機數的演算法擴展閱讀

1、如果要隨機生成一個在一定范圍的數,你可以在宏定義中定義一個random(int number)函數,然後在main()裡面直接調用random()函數。

2、在對rand()的前三次調用中,並且此後得到的返回值仍然是在對rand()的第一批調用中所得到的其餘的返回值。因此,只有再次給srand()提供一個隨機的「種子」值,才能再次得到一個隨機數。

④ C語言如何生成隨機數

在VC中設計到隨機數有兩個函數
srand()
and
rand()
srand()
的作用是是一個種子,提供每次獲得隨機數的基數而已,rand()根據種子而產生隨機數
注意
1:srand()
里的值必須是動態變化的,否則得到的隨機數就是一個固定數
2:其實可以不用寫srand()
,只用rand()就可以了,省事,簡單,例子如下
如果我們想得到一個
0-60的隨機數那麼可以寫成
int
i;
i=rand()%60;
就可以了。
當然最好有個統一的標注如下:
int
i;
srand((unsigned)time(
NULL
));
i=rand()%60;
這樣就OK了。

⑤ 如何製作隨機數 C語言……

首先使用srand(unsigned
int)
函數
設置種子,然後使用rand()返回一個
隨機數

使用這兩個函數時需要包含頭文件
#include <stdlib.h>
1、在標準的C庫中函數rand()可以生成0~RAND_MAX之間的一個隨機數,其中RAND_MAX
是stdlib.h
中定義的一個
整數
,它與系統有關;
2、因為rand()函數是按指定的
順序
來產生整數,因此每次執行上面的
語句
都列印相同的兩個值,所以說C語言的隨機並不是真正意義上的隨機,有時候也叫偽隨機數;
3、通常通過為隨機數
生成器
提供一個新的
隨機種子
來達到使
程序
在每次執行時都能生成一個新
序列
的隨機值的效果。函數
srand()(來自stdlib.h)可以為隨機數生成器播散種子。只要種子不同rand()函數就會產生不同的隨機數序列。srand()稱為隨機數生成器的初始化器;
示例代碼:
#include <time.h> //用到了time函數
#include <stdlib.h>
#include <stdio.h>

int main()
{
int i, number;
srand((unsigned int) time(NULL)); //用時間做種,每次產生隨機數不一樣
for (i=0; i<10; i++)//產生10個隨機數
{
number = rand() % 12 + 1;//產生1-13的隨機數
printf("%d\n", number);
}
return 0;
}

⑥ c語言怎麼生成隨機數

你好!

#include<stdio.h>
#include<stdlib.h>//生成隨機數用
#include<time.h>//利用時間生成種子
#include<math.h>

intmain()
{
inti;
inta[100];
srand(time(NULL));//生成種子

for(i=0;i<100;i++)
{
a[i]=rand()%1000+1000;//生成一個小於1000的隨機數
//然後加1000,變成1000-2000之間的數
printf("%d",a[i]);//列印
}

i=rand()%100;//隨機抽取其中的一個數
printf(" 抽取到的是:%d ",a[i]);//列印


return0;
}

⑦ 怎麼用c產生隨機數

我們可以先通過random方法生成一個隨機數,然後將結果乘以10。此時產生的隨機數字即為大於等於0小於10的數字。然後再利用Int方法進行轉換(它會去掉小數掉後面的數字,即只獲取整數部分,不是四捨五入)。最後即可獲取一個0到9的整數型隨機數字。其實現方法很簡單,就是對原有的random方法按照如下的格式進行變型:(int)(Math.Random()*10)即可。

⑧ c語言中如何生成1個0到1的隨機數

C語言中生成1個0到1的隨機數可以執行語句:float b=rand()/(RAND_MAX+1.0);

解析:

標准C庫中函數rand()可以生成0~RAND_MAX之間的一個隨機數,其中RAND_MAX 是stdlib.h 中定義的一個整數,它與系統有關。rand()函數沒有輸入參數,直接通過表達式rand()來引用;

用函數rand取得的隨機數除以(RAND_MAX+1.0),即可確保得到的結果在0到1之間。ISO IEC 9899 2011 (C11)標准中未規定 RAND_MAX 的具體數值。但該標准規定了RAND_MAX 的值應至少為32767。編程的時候,不應該對 RAND_MAX 的具體數值做任何假設。

(8)c生成隨機數的演算法擴展閱讀:

相關說明:

1、因為rand()函數是按指定的順序來產生整數,因此每次執行上面的語句都列印相同的兩個值,所以說C語言的隨機並不是真正意義上的隨機。

2、為了使程序在每次執行時都能生成一個新序列的隨機值,我們通常通過為隨機數生成器提供一粒新的隨機種子。函數 srand()(來自stdlib.h)可以為隨機數生成器播散種子。只要種子不同rand()函數就會產生不同的隨機數序列。srand()稱為隨機數生成器的初始化器。

3、隨機種子(Random Seed)是計算機專業術語,一種以隨機數作為對象的以真隨機數(種子)為初始條件的隨機數。一般計算機的隨機數都是偽隨機數,以一個真隨機數(種子)作為初始條件,然後用一定的演算法不停迭代產生隨機數。

⑨ C語言中怎樣生成隨機數

在VC中設計到隨機數有兩個函數

srand() and rand()

srand() 的作用是是一個種子,提供每次獲得隨機數的基數而已,rand()根據種子而產生隨機數

注意

1:srand() 里的值必須是動態變化的,否則得到的隨機數就是一個固定數

2:其實可以不用寫srand() ,只用rand()就可以了,省事,簡單,例子如下

如果我們想得到一個 0-60的隨機數那麼可以寫成

int i;

i=rand()%60;

就可以了。

當然最好有個統一的標注如下:

int i;

srand((unsigned)time( NULL ));

i=rand()%60;

這樣就OK了。

⑩ C語言如何編程產生隨機數

1、首先打開Visual
stdio
2019,依次點擊文件,新建,項目新建以一個空白的項目:
2、新建新項目以後,右鍵點擊左邊的源文件,選擇添加,點擊添加項:
3、選擇cpp,並將下方的擴展名改為.c,然後點擊確定:
4、接下來就可以用編譯器編譯,使用rand()函數產生C語言的隨機數,需要加入stdlib.h和time.h在表頭,rand()函數需要給srand()函數提供一個參數,不然系統會給定一個默認的參數,如果參數為一任意的常量的話,得到的也是偽隨機數:
4、按ctrl+F5就可以運行程序了,在彈出的窗口中就會看到得到的所有隨機數了:

熱點內容
win10怎麼關閉登錄密碼 發布:2024-10-05 11:09:55 瀏覽:934
降溫解壓器 發布:2024-10-05 10:54:15 瀏覽:420
軋鋼壓縮空氣 發布:2024-10-05 10:54:10 瀏覽:184
京東微信密碼是多少 發布:2024-10-05 10:28:48 瀏覽:486
粘連演算法 發布:2024-10-05 10:10:45 瀏覽:647
php監控進程 發布:2024-10-05 09:37:06 瀏覽:53
企業密信怎麼找回伺服器代碼 發布:2024-10-05 09:33:19 瀏覽:229
怎麼用電腦開mc伺服器 發布:2024-10-05 09:25:01 瀏覽:409
linux目錄亂碼 發布:2024-10-05 09:24:24 瀏覽:174
歐姆龍plc有密碼如何傳送 發布:2024-10-05 09:24:24 瀏覽:338