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

c隨機數演算法

發布時間: 2024-08-06 20:32:07

A. c語言隨機數怎麼生成

在實際編程中,我們經常需要生成隨機數。在c語言中我們通常使用rand方法生成隨機數,在調用rand前需要調用srand初始化隨機數種子。

電腦:華為MateBook14

系統:Windows10

軟體:notepad++等編輯器、gcc編譯器1.0

1、使用rand函數生成隨機數,rand隨機生成一個位於0~RAND_MAX之間的整數。如下圖中,我們直接使用rand方法啟團生成10個隨機數。

B. 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. 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()提供一個隨機的「種子」值,才能再次得到一個隨機數。

熱點內容
上傳醫保局 發布:2024-11-25 14:57:00 瀏覽:732
刀劍神域緩存 發布:2024-11-25 14:56:07 瀏覽:520
c語言計算機二級編程題 發布:2024-11-25 14:46:49 瀏覽:313
c語言判斷進程是否存在 發布:2024-11-25 14:42:50 瀏覽:274
大數據緩存 發布:2024-11-25 14:29:07 瀏覽:436
存儲體與MAR 發布:2024-11-25 14:23:08 瀏覽:283
電腦瀏覽器怎麼取消配置文件 發布:2024-11-25 14:20:39 瀏覽:164
如何消除伺服器數據傳輸瓶頸 發布:2024-11-25 14:08:48 瀏覽:289
安卓開發程序如何上傳到手機上 發布:2024-11-25 14:08:30 瀏覽:29
訪客qq獲取系統源碼 發布:2024-11-25 14:08:30 瀏覽:18