隨機數:在某次產生過程中按照實驗過程中表現的分布概率隨機產生的,其結果是不可**的,是不可見的。一般使用的是偽隨機的。
常使用函式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不能整除小於等於根...