生成偽隨機整數rand

2021-09-30 13:08:43 字數 1114 閱讀 3895

rand()這個函式對於乙個新手來說第一次出現就是在猜字數遊戲當中,可是第一次看根本不懂,只是照著套用,直到上週選修課又程式設計猜字數遊戲用到時,覺得是應該好好弄懂了!(廢話好多(^__^)

猜字數想讓程式生成,就用stdilb.h標頭檔案中的rand()函式,每次呼叫都會返回乙個隨機整數,叫偽隨機數,範圍是0~rand-max

int chosen=0;

chosen=rand();

但rand()函式生成序列需要乙個初始種子數字,對於特定的種子,生成的序列相同。(即每次猜數遊戲呼叫它猜的都是同乙個數字,那還有什麼意思?)這個時候就需要srand(),也屬於stdlib.h中,呼叫它可以傳遞給它的引數作為種子初始化序列,就是這樣我們每次猜的數字都會不同,著才是乙個正常的遊戲,you know?

但這樣還不夠,time.h標頭檔案中宣告的time()函式,返回的是2023年1月1日到現在經過的秒數,所以每次返回值double不同,time()函式的引數值是null

srand(time(null));

int chosen=0;

chosen=rand();

這樣我們就可以每次得到乙個不同的整數了,但是還有乙個問題:那就是你猜數字總該有個範圍是吧,要不然太大了,猜一輩子嗎?也不能這樣虐單身dog是吧。上限rand-max相當大,通常為int最大值,但可以縮小範圍:

比如猜的數字x~y

就是x+rand()%(y-x+1)【公式】

或者:

float a;

a=rand()%y+x;

這樣就是產生[x,x+y)之間的數字,也就是[x,x+y-1]

兩種表達方式都是一樣的

srand(time(null));

int chosen=0;

chosen=1+rand()%100; //範圍是1~100

ok啦,我特別去找了些資料,盡量白話文,這樣大家都懂了吧,恩,不錯,繼續加油吧

rand生成偽隨機數

void srand unsigned seed 設定隨機數種子。int rand void 根據設定的種子計算生成一組整型偽隨機數序列。若沒有手動設定seed,這個函式會自動設定seed為1,即手動呼叫srand 1 與不呼叫srand產生的效果一樣。每次呼叫rand時,會依次將隨機數從隨機數序列...

PHP生成隨機數 rand

php 4,php 5 rand 產生乙個隨機整數 intrand void intrand int min,int max 如果沒有提供可選引數min和max,rand 返回 0 到 getrandmax 之間的偽隨機整數。例如想要 5 到 15 包括 5 和 15 之間的隨機數,用 rand 5...

rand 和srand 產生偽隨機數

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