C 產生各種隨機數

2021-10-02 01:29:31 字數 2781 閱讀 1987

本部落格主要內容包括:

1. rand()函式;

2.std庫的default_random_eigine類;

3.opencv庫。

#include

srand((

unsigned

int)

time(0

));//隨機種子,不要寫在迴圈體中

int a =

rand()

%100

;//產生[0,100)的int型隨機數

float f =

(float

)rand()

/(float

) rand_max;

//產生[0,1]之間的float型隨機數

正太分布隨機數

#include

const

double mean =

0.0;

const

double stddev =

1.0;

std:

:default_random_engine generator;

generator.

seed

(32767);

//建立後再設定種子

std:

:normal_distribution<

double

>

dist

(mean,stddev)

;double random_num =

dist

(generator)

;

均勻分布隨機數

#include

int min,max;

default_random_engine e;

e.seed

(time(0

));//設定當前時間為引擎種子

uniform_int_distribution<

unsigned

>

u(min,max)

;int randnum=

u(e)

;

其他

#include

default_random_engine e;

e.seed

(time(0

));//設定當前時間為引擎種子

//生成整形隨機數

uniform_int_distribution<

int>u1(

0,9)

;randnum =

u1(e)

;//生成浮點型隨機數

uniform_real_distribution<

float

>u2(

0,9)

;float randnum2 =

u2(e)

;//生成布林型隨機數

bernoulli_distribution b1

(0.5);

//發生true的概率

bool randnum3 =

b1(e)

;//還有很多新定義的分布類,這裡只列舉一些常用的

標頭檔案

#include

#include

產生隨機數

cv:

:rng rng;

//產生64位整數

int n = rng;

//產生[0,1)範圍內均勻分布的double型別資料

double d = rng.

uniform((

double)0

,(double)1

);//總是得到double型別資料0.000000,因為會呼叫uniform(int,int),只會取整數,所以只產生0

double d2 = rng.

uniform(0

,1);

//產生[0,1)範圍內均勻分布的float型別資料,注意被自動轉換為double了

double d3 = rng.

uniform

(0.f

,1.f);

//產生符合均值為0,標準差為4的高斯分布的隨機數

double g = rng.

gaussian(4

);//產生均值為1,標準差為4的高斯分布的隨機數

double g2 = g +

1.0;

產生隨機矩陣

//mat a = (mat_(3,3) << 0,1,2,3,4,5,6,7,8);

mat mat(30

,40,cv_8uc1)

;rng rng

(unsigned

int(

time

(null))

);//產生的數都在[0,255]之間,但是絕大多數是255,因為「false」引數,使得fill函式採用了截斷操作。

rng.

fill

(mat, rng:

:uniform,0,

255,false)

;//產生的數都在[0,255)之間,且均小於255

rng.

fill

(mat,rng:

:uniform,0,

255,true)

;

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。例...