當前位置:首頁 » 編程語言 » c語言產生隨機數

c語言產生隨機數

發布時間: 2022-02-01 14:07:59

c語言生成隨機數

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

② C語言中獲得隨機數的方法

問題1: 怎樣獲得一個真正的隨機數?要知道,rand()是不能產生真正的隨機數的!即使不能產生真正的隨機數,也要大概接近呀!而rand()好象每次的隨機都一樣。

專家解答:

之所以rand()每次的隨機數都一樣是因為rand()函數使用不正確。各種編程語言返回的隨機數(確切地說是偽隨機數)實際上都是根據遞推公式計算的一組數值,當序列足夠長,這組數值近似滿足均勻分布。如果計算偽隨機序列的初始數值(稱為種子)相同,則計算出來的偽隨機序列就是完全相同的。這個特性被有的軟體利用於加密和解密。加密時,可以用某個種子數生成一個偽隨機序列並對數據進行處理;解密時,再利用種子數生成一個偽隨機序列並對加密數據進行還原。這樣,對於不知道種子數的人要想解密就需要多費些事了。當然,這種完全相同的序列對於你來說是非常糟糕的。要解決這個問題,需要在每次產生隨機序列前,先指定不同的種子,這樣計算出來的隨機序列就不會完全相同了。你可以在調用rand()函數之前調用srand( (unsigned)time( NULL ) ),這樣以time函數值(即當前時間)作為種子數,因為兩次調用rand函數的時間通常是不同的,這樣就可以保證隨機性了。你也可以使用srand函數來人為指定種子數。Windows 9x/NT的游戲FreeCell就允許用戶指定種子數,這樣用戶如果一次游戲沒有成功,下次還可以以同樣的發牌結果再玩一次。

問題2: 我按照上述方法並不能產生隨機數,僅產生公差為3或4的等差數列:
#include <stdlib.h>
#include <iostream.h>
#include <conio.h>
#include <time.h>
void main()
{
for(int i=0;i<100000;i++)
{
srand( (unsigned)time( NULL ) );
cout<<rand()<<endl;
}
}
專家解答:
你的程序是有問題的,你每產生一個隨機數之前,都調用一次srand,而由於計算機運行很快,所以你每次用time得到的時間都是一樣的(time的時間精度較低,只有55ms)。這樣相當於使用同一個種子產生隨機序列,所以產生的隨機數總是相同的。你應該把srand放在循環外:
srand( (unsigned)time( NULL ) );
for(int i=0;i<100000;i++)
{
//相關語句
}

③ 怎麼用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語言如何產生10以內的隨機數

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
intmain()
{
inta[10]/*用於保存10個產生的隨機數*/,i;
srand((unsignedint)time(NULL));//設置當前時間為種子
for(i=0;i<10;++i){
a[i]=rand()%10+1;//產生1~10的隨機數
}
//列印生成的隨機數
for(i=0;i<10;++i){
printf("%d",a[i]);
}
printf(" ");
return0;
}

⑤ C語言中產生隨機數的函數是什麼

rand函數也是調用dos的時鍾,進行的偽隨機函數.
你也可以使用時鍾來模擬隨機函數.
可以試用gettime這個函數:
long int MyRand(int x)
{
struct time t1,t2,t3;
gettime(&t1);
int y1=t1.ti_hund;//取1/100s作為基數
gettime(&t2);
int y2=t2.ti_hund;//取1/100s作為基數
gettime(&t3);
int y3=t3.ti_hund;//取1/100s作為基數
return y1*y2*y3;//產生的隨機數0~99*99*99
}

⑥ c語言產生N個隨機數

#include
<stdio.h>
#include
<stdlib.h>
#include
<time.h>
void
main(){
int
i;
srand((unsigned)time(NULL));
for(j=1;j<=5;j++)
printf("%d",rand()%10);
printf("\n");
}
隨即產生數字,字元么就是把%d改成%c。產生幾個隨即數用循環i控制;
一個隨即數有幾個數字組成就是對rand()取模;

⑦ 如何用C語言產生隨機數,隨機數的加和是一確定的數

思路:
1
先獲取到加和值;
2
輸入加和值范圍內的一個隨機數;
3
用加和值減去獲取到的隨機數,這樣就得到了另外一個數;
4
循環執行,直到獲取到符合要求數量的數值為止。
以獲取10組數值為例,代碼如下:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int s;
int i,n;
srand(time(NULL));//設置隨機數種子。
scanf("%d",&s);//輸入加和值。
for(i = 0; i < 10; i ++)//獲取10組要求的數值。
{
n = rand()%s;//獲取一個0~s-1的隨機數。
printf("%d+%d=%d\n", n, s-n, s);//輸出結果。
}

return 0;
}

⑧ c語言產生一個隨機數

rand是根據一個種子來產生隨機數的,在沒設置的情況下是不變的
調用srand(time(0));
把當前時間作為種子即可

⑨ c語言產生隨機數

用戶從鍵盤輸入4位數字不重復的整數,來匹配程序運行時隨機生成的一個4位整數,若數字和位置均等同,表示用戶贏了。每猜一次,計算機均給出提示信息(x,y),x表示數字、位置都猜得正確的數字的個數,y表示數字猜對了,但位置沒有猜對的數字的個數。
程序運行中,給定H鍵作為幫助鍵,幫助用戶更快的達到目的,無論何時,按下H鍵,均得到更詳細的信息,如「第1位數字正確,第2,3位數字位置不對」等。

熱點內容
上傳音樂表 發布:2025-01-10 17:04:52 瀏覽:165
如何在安卓tv上裝當貝市場 發布:2025-01-10 16:59:54 瀏覽:978
電腦鐵電存儲 發布:2025-01-10 16:57:19 瀏覽:463
c語言源程序的基本單位 發布:2025-01-10 16:47:37 瀏覽:285
王者安卓賬號如何換到蘋果 發布:2025-01-10 16:34:47 瀏覽:729
c語言lua 發布:2025-01-10 16:34:46 瀏覽:206
我的世界檢測伺服器人員 發布:2025-01-10 16:32:30 瀏覽:833
資料庫表模板 發布:2025-01-10 16:22:21 瀏覽:356
郵政新農合社保卡初始密碼多少 發布:2025-01-10 16:01:32 瀏覽:143
安卓系統哪個最商務 發布:2025-01-10 15:49:28 瀏覽:910