C 雜談(三)產生隨機數與time函式

2022-07-31 12:21:12 字數 1314 閱讀 3930

產生隨機數在程式中很有用,這篇文章簡單介紹一下產生隨機數的方法。

偽隨機數

使用標準庫中的rand()函式產生隨機數。

#include#include

using

namespace

std;

intmain()

表面上看,這段程式會產生三個隨機數,但乙個有趣的事情是,每次程式執行時產生的資料都是相同的。

我每次執行的結果都如下:

可以看出,rand()函式並不會產生乙個真正的隨機數。

要產生真正的隨機數,需要了解time函式。

time函式

中的time函式可以返回乙個時間。函式宣告如下

time_t time(

time_t *timer

);

引數timer是乙個指標,指向時間的儲存位置。使用時引數可以為0。如果使用其他整數,比如1,會產生無法從int轉換成timme_t的錯誤。

#include#include

using

namespace

std;

intmain()

對於time函式的返回值,一把理解應該是當前的時間,但事實執行結果卻並不如所想。

事實上,這個結果便是當前時間,只是表示方法有所不同。這個值是從2023年1月1日午夜到現在的秒數。

真正的隨機數

中產生用於真正隨機數的函式srand()。函式接受乙個引數作為seed,用於控制rand()函式的演算法。相同的seed會使rand()產生相同的結果。

所以,若要產生真正的隨機數,可以使用時間作為seed,這樣每次都會產生真正的隨機數了。

#include#include

#include

using

namespace

std;

intmain()

這樣,在使用了stan()之後,rand便可產生真正的隨機數了。

控制隨機數的範圍

可以使用模運算來控制隨機數的範圍。下面**產生了[0,10)範圍的隨機數。

rand()%10;
乙個例子,展示了這篇文章提及的函式。

#include#include

#include

using

namespace

std;

intmain()

首先輸出乙個秒數。

接著輸出了3個隨機數,這三個隨機數每次都是相同的。

使用時間作為seed,rand()函式的返回值。

產生3個真隨機數,其範圍是[0,10)。

c 隨機數產生

我們在做能自動生成試卷的考試系統時,常常需要隨機生成一組不重複的題目,在.net framework中提供了乙個專門用來產生隨機數的類system.random。對於隨機數,大家都知道,計算機不可能產生完全隨機的數字,所謂的隨機數發生器都是通過一定的演算法對事先選定的隨機種子做複雜的運算,用產生的結...

C 隨機數產生

標準庫 被包含於中 提供兩個幫助生成偽隨機數的函式 函式一 int rand void 從srand seed 中指定的seed開始,返回乙個 seed,rand max 0x7fff 間的隨機整數。函式二 void srand unsigned seed 引數seed是rand 的種子,用來初始化...

C 產生隨機數

c 怎樣產生隨機數 這裡要用到的是 rand 函式 srand 函式 c 裡沒有自帶的random int number 函式。1 如果你只要產生隨機數而不需要設定範圍的話,你只要用rand 就可以了 rand 會返回一隨機數值,範圍在0至rand max 間。rand max值至少為32767。例...