日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++如何产生随机数

發布時間:2023/12/10 c/c++ 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++如何产生随机数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載自**

https://www.cnblogs.com/ql698214/p/5424937.html

**
一、使用rand()函數
頭文件<stdlib.h>

(1) 如果你只要產生隨機數而不需要設定范圍的話,你只要用rand()就可以了:rand()會返回一隨機數值, 范圍在0至RAND_MAX 間。RAND_MAX定義在stdlib.h, 其值為2147483647。

例如:

#include<stdio.h> #include<stdlib.h> void main() {for(int i=0;i<10;i+)printf("%d/n",rand()); }

(2) 如果你要隨機生成一個在一定范圍的數,你可以在宏定義中定義一個random(int number)函數,然后在main()里面直接調用random()函數

x = rand()%11; /產生1~10之間的隨機整數/

y = rand()%51 - 25; /產生-25 ~ 25之間的隨機整數/

z = ((double)rand()/RAND_MAX)*(b-a) + a;/產生區間[a,b]上的隨機數/

#include<iostream> #include<stdlib.h>using namespace std;#define random(x) (rand()%x)void main() { for (int i = 0; i < 10; i++) {cout << random(10) << " ";}cout << endl;system("pause"); }

(3)但是上面兩個例子所生成的隨機數都只能是一次性的,如果你第二次運行的時候輸出結果仍和第一次一樣。這與srand()函數有關。srand()用來設置rand()產生隨機數時的隨機數種子。在調用rand()函數產生隨機數前,必須先利用srand()設好隨機數種子(seed), 如果未設隨機數種子, rand()在調用時會自動設隨機數種子為1。上面的兩個例子就是因為沒有設置隨機數種子,每次隨機數種子都自動設成相同值1 ,進而導致rand()所產生的隨機數值都一樣。

srand()函數定義 : void srand (unsigned int seed);

通常可以利用geypid()或time(0)的返回值來當做seed,如果你用time(0)的話,要加入頭文件#include<time.h>

#include<iostream> #include<stdlib.h> #include<time.h>using namespace std;#define random(x) (rand()%x)void main() { srand((int)time(0));for (int i = 0; i < 10; i++) {cout << random(10) << " ";}cout << endl;system("pause"); }

1
(4)隨機產生(a,b)區間內的隨機數

#include<iostream> #include<stdlib.h> #include<time.h> #include<iomanip> using namespace std; #define random(a,b) (((double)rand()/RAND_MAX)*(b-a)+a)void main() { srand((int)time(0));for (int i = 0; i < 100; i++) { cout << random(0, 10) << " ";}cout << endl;system("pause"); }

1
(5)四舍五入,返回整數,通過floor和ceil函數實現

#include<iostream> #include<stdlib.h> #include<time.h> #include<iomanip> using namespace std;/*四舍五入,返回整數*/ double round(double r) {return (r > 0.0) ? floor(r + 0.5) : ceil(r - 0.5); } double randomRange(double a, double b) { double x = (double)rand() / RAND_MAX;double result = x*(b - a) + a;return round(result); }void main() { srand((int)time(0));for (int i = 0; i < 100; i++) {//cout << fixed << setprecision(0) << randomRange(0, 10) << " ";cout << randomRange(0, 10) << " ";}cout << endl;system("pause"); }

henry
好文要頂 關注我 收藏該文

總結

以上是生活随笔為你收集整理的C++如何产生随机数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。