C 生成一定範圍內固定個數的隨機數

2021-10-04 12:54:14 字數 946 閱讀 5317

隨機數:在某次產生過程中按照實驗過程中表現的分布概率隨機產生的,其結果是不可**的,是不可見的。一般使用的是偽隨機的。

常使用函式rand()產生隨機數,但是隨機數值的範圍在0至rand_max 間,rand_max與使用資料型別有關。

int randnum =10;

for(

int i =

0; i < randnum; i++

)

產生結果:41 18467 6334 26500 19169 15724 11478 29358 26962 24464。

一般情況下,隨機數產生的範圍是rand_min至rand_max之間。通用格式是為:

(1)[a,b)間隨機整數:rand() % (b-a)+ a;

(2)[a,b]間隨機整數:rand() % (b-a+1)+ a;

(3)(a,b]間隨機整數:rand() % (b-a)+ a + 1;

不同型別的隨機數使用相應資料型別進行轉換。

int randnum =10;

for(

int i =

0; i < randnum; i++

)

產生結果:2 8 5 1 10 5 9 9 3 5。

可以發現,[1,10]之間產生的隨機數是有重複。不重複,該如何?

例:在[1,20]中產生5個不重複的隨機數

#include

#include

#include

using

namespace std;

intmain()

system

("pause");

return0;

}

產生結果:9 19 10 6 2。

產生固定範圍的不重複隨機數方法較多,還需耐心學習!

在一定範圍內生成隨機數

問題 給定乙個最小正整數和乙個最大正整數,如何在它們之間生成隨機數 包含上下界 1 它生成的隨機數範圍是 0,2 它所使用數值的型別是uint32,並不是int,因此需要做型別轉換。因為使用arc4random uniform 函式生成的隨機數不包含上界,但是我們的題目要求包含上界,所以在上下界相減...

C 中產生一定範圍內的隨機數

如果讓你用c 來生成0 n 1之間的隨機數,你會怎麼做?你可能會說,很簡單,看 srand unsigned time null rand n 仔細想一下,這個結果是隨機的嗎 當然,我們不考慮rand 函式的偽隨機性 不是的,因為rand 的上限是rand max,而一般情況下,rand max並不...

計算一定範圍內素數個數的演算法

問題 給定乙個大整數n,計算開區間 1,n 的素數有多少?include include include include include undef true define true 1 undef false define false 0 typedef int bool32 a不能整除小於等於根...