當前位置:首頁 » 編程語言 » c語言生成偽隨機數
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言生成偽隨機數

發布時間: 2022-02-01 14:02:30

⑴ 生成100比特的偽隨機數演算法。用c語言做出來

#include <stdio.h>
#include <stdlib.h>

void main()
{
int a;
srand((unsigned)time(NULL));
a = rand() % 100;
}

⑵ 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語言,如何產生隨機數

具體代碼如下:
#include <stdio.h>
#include <stdlib.h>
#include <time.h> //用到了time函數
int main()
{ int i,number;
srand((unsigned) time(NULL)); //用時間做種,每次產生隨機數不一樣
for (i=0; i<50; i++)
{
number = rand() % 101; //產生0-100的隨機數
printf("%d ", number);
}
return 0;
}
有以下幾種情況:
(1) 如果你只要產生隨機數而不需要設定范圍的話,你只要用rand()就可以了:rand()會返回一隨機數值, 范圍在0至RAND_MAX 間。RAND_MAX定義在stdlib.h, 其值為2147483647。

(2) 如果你要隨機生成一個在一定范圍的數,你可以在宏定義中定義一個random(int number)函數,然後在main()裡面直接調用random()函數:
例如:
rand()%100是產生0-99的隨機數。

(3)但是上面兩個例子所生成的隨機數都只能是一次性的,如果你第二次運行的時候輸出結果仍和第一次一樣。這與srand()函數有關。srand()用來設置rand()產生隨機數時的隨機數種子。在調用rand()函數產生隨機數前,必須先利用srand()設好隨機數種子(seed), 如果未設隨機數種子, rand()在調用時會自動設隨機數種子為1。上面的兩個例子就是因為沒有設置隨機數種子,每次隨機數種子都自動設成相同值1 ,進而導致rand()所產生的隨機數值都一樣。
srand()函數定義 : void srand (unsigned int seed);
通常可以利用geypid()或time(0)的返回值來當做seed。如果你用time(0)的話,要加入頭文件#include<time.h>

⑷ 關於c語言偽隨機數中的一個生成問題,多謝!!!

time(NULL)返回當前時間時間戳,也就是說你每秒執行都會返回不一樣的值,而如果不用的話srand默認參數是1,srand通過這個參數生成的是一個偽隨機數,根據你傳入的參數可以計算出隨機值

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

}

(5)c語言生成偽隨機數擴展閱讀

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

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

⑹ C語言生成隨機數

C語言里隨機數名叫偽隨機,靠取時間很小的某位來的,沒有其他的,接受吧

⑺ 如何用C語言生成真正的隨機數

先使用srand函數以當前時間做一個種子,然後再隨機

如:

#include<time.h>//用到了time函數
#include<stdlib.h>
#include<stdio.h>

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

⑻ C語言用rand產生的是偽隨機數么

是的。rand生成的數,只要種子是確定的,生成的隨機數就是確定的。同一個種子生成的隨機數之間是有關系的,並不是獨立的。

⑼ 如何在C語言中生成一定范圍內的隨機數

#include <stdlib.h>
#include <stdio.h>
#include <time.h>
srand()((int)time(NULL));設定隨機數種子
rand()()%100;產生0-99的隨機數。高級點的,假如要產生16-59之間的數,你可以這樣寫:rand()()%44+16(這里44由59-16+1得到)。其他情況如法炮製!
各種編程語言返回的隨機數(確切地說是偽隨機數)實際上都是根據遞推公式計算的一組數值,當序列足夠長,這組數值近似滿足均勻分布。如果計算偽隨機序列的初始數值(稱為種子)相同,則計算出來的偽隨機序列就是完全相同的。這個特性被有的軟體利用於加密和解密。加密時,可以用某個種子數生成一個偽隨機序列並對數據進行處理;解密時,再利用種子數生成一個偽隨機序列並對加密數據進行還原。這樣,對於不知道種子數的人要想解密就需要多費些事了。當然,這種完全相同的序列對於你來說是非常糟糕的。要解決這個問題,需要在每次產生隨機序列前,先指定不同的種子,這樣計算出來的隨機序列就不會完全相同了。你可以在調用rand()函數之前調用srand( (unsigned)time( NULL ) ),這樣以time函數值(即當前時間)作為種子數,因為兩次調用rand函數的時間通常是不同的,這樣就可以保證隨機性了。你也可以使用srand函數來人為指定種子數。
參考資料:http://..com/question/132839023.html

⑽ c語言 關於產生隨機數

/**
*編譯器:vs2010
*時間:2017年11月7日
*@fencaide
*/

#include<stdio.h>
#include<stdlib.h>
#include<windows.h>
#include<time.h>

intmain(void)
{
intanswer=0;

for(inti=0;i<10;i++){
srand((unsigned)time(NULL));
answer=rand()%9000;
printf("%d ",answer);
Sleep(2000);
}

getchar();
getchar();
return0;
}

人家的隨機是相對於這個種子的情況下,不同的種子產生的結果當然不具備隨機性,而且偽隨機不是真隨機。也就是對於一個種子多次rand是具備「隨機性」的,而因為是偽隨機,多個種子多次隨機自然不是隨機的,下面這段話我 別人的哈

  • rand函數產生的並不是真意正義上的隨機數,是一個偽隨機數,是根據一個數,我們可以稱它為種子,為基準以某個遞推公式推算出來的一系數,當這系列數很大的時候,就符合正態公布,從而相當於產生了隨機數,但這不是真正的隨機數