採用rand生成隨機數方法
我們知道rand()函式可以用來產生隨機數,但是這不是真正意義上的隨機數,是一個偽隨機數,是根據一個數(我們可以稱它為種子)為基準以某個遞推公式推算出來的一系列數,當這系列數很大的時候,就符合正態公佈,從而相當於產生了隨機數,但這不是真正的隨機數,當計算機正常開機後,這個種子的值是定了的,除非你破壞了系統。
1.rand()
功能:隨機數發生器
用法:int rand(void)
所在標頭檔案: stdlib.h
rand()的內部實現是用線性同餘法做的,它不是真的隨機數,因其週期特別長,故在一定的範圍裡可看成是隨機的。
rand()返回一隨機數值的範圍在0至RAND_MAX 間。RAND_MAX的範圍最少是在32767之間(int)。用unsigned int 雙位元組是65535,四位元組是4294967295的整數範圍。0~RAND_MAX每個數字被選中的機率是相同的。
使用者未設定隨機數種子時,系統預設的隨機數種子為1。
rand()產生的是偽隨機數字,每次執行時是相同的;若要不同,用函式srand()初始化它。
2.srand()
功能:初始化隨機數發生器
用法: void srand(unsigned int seed)
所在標頭檔案: stdlib.h
srand()用來設定rand()產生隨機數時的隨機數種子。引數seed必須是個整數,如果每次seed都設相同值,rand()所產生的隨機數值每次就會一樣。
3.使用當前時鐘作為隨機數種子
rand()產生的隨機數在每次執行的時候都是與上一次相同的。若要不同,用函式srand()初始化它。可以利用srand((unsigned int)(time(NULL))的方法,產生不同的隨機數種子,因為每一次執行程式的時間是不同的。
#include <iostream> #include <iomanip> #include <time.h> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { //設定種子,不然rand()是個偽隨機數 srand(time(NULL)); //生成指定範圍內的隨機數 //[a,b],(rand() % (b-a+1)) + a //[a,b),(rand() % (b-a)) + a //(a,b) //(a,b],(rand() % (b-a)) + a + 1 int nStart = 10; int nEnd = 100; for ( int i = 0; i < 20; i++ ) { cout << nStart + (int)(nEnd - nStart) * rand() / (RAND_MAX + 1) << endl; } //生成0~1之間的浮點數,保留小數點後兩位 for ( int i = 0; i < 20; i++ ) { cout << setprecision(2) << rand() /double(RAND_MAX) << endl; } return 0; }
相關推薦
採用rand生成隨機數方法
我們知道rand()函式可以用來產生隨機數,但是這不是真正意義上的隨機數,是一個偽隨機數,是根據一個數(我們可以稱它為種子)為基準以某個遞推公式推算出來的一系列數,當這系列數很大的時候,就符合正態公佈,從而相當於產生了隨機數,但這不是真正的隨機數,當計算機正常開機後,這個種
SecretKeyCreateUtil工具類,採用安全的生成隨機數方法(SecureRandom),此處為10位
public class SecretKeyCreateUtil {/** * 產生金鑰資訊 * 採用安全的生成隨機數方法(SecureRandom) * @throws IOException * @throws NoSuchAlgorithmException */pu
python生成隨機數方法小結
random.randrange(a, b, step):在指定的集合[a,b)中,以step為基數隨機取一個數.如random.randrange(0, 20, 2),相當於從[0,2,4,6,...,18]中隨機取一個.例: (adsbygoogle = window.ads
srand()和rand()生成隨機數
#include <iostream> #include <time.h> using namespace std; void main() { //srand(1);
MATLAB中生成隨機數方法總結
好久沒用MATLAB了,今天在利用MATLAB進行資料處理時,突然發現自己忘記了該如何產生自己需要的隨機數形式,於是又查了一通資料。現對其進行一個簡單的總結,供自己和大家以後參考: 1. randi
C#(.Net)平臺下生成隨機數方法的小結
最近在做一些工作,需要用到一些隨機數來確保生出出來的串號唯一。 開始,很簡單地使用System.Random類來生成隨機數。很快,問題就來了,發現當random的生成間隔小於1ms時,隨機數就重複了(僅限於每次都新建Random物件),因為新建random時候是預設以當前時
【JavaSE基礎】生成隨機數的三種方法
new random nbsp 最小 最小值 () 通過 java -s 方法一: (數據類型)(最小值+Math.random()*(最大值-最小值+1)) 舉例: (int)(1+Math.random()*(10-1+1)) 生成1~10的隨機數。 方法
C++生成隨機數的方法總結
oca cnblogs nbsp seconds wmi iostream 代碼 cin std 網上有很多使用C++生成隨機數的文章,其原理不再贅述,這裏貼出windows系統上生成各種隨機數的代碼,方便查用。 1 #include <iostream>
PHP生成隨機數的幾種方法
rand dst ret fun ech end tran spa bstr 第一種方法用mt_rand() function GetRandStr($length){ $str=‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOP
python 生成隨機數的兩種方法
1. 使用 random 包生成隨機數 可以生成 均勻分佈, 高斯分佈,(包括正態分佈) 指數分佈,(與泊松分佈有區別:泊松分佈表示一段時間發生多少次,而指數分佈表示兩次發生的時間間隔) 貝塔分佈, 韋布爾分佈的隨機數 由此可見,random 包支援的隨機分佈比較有限,功能較少.
關於使用jmeter函式助手生成隨機數的使用方法
記錄自己的生活! 1、使用jmeter函式助手的生成隨機數的方法,主要包含以下幾個函式: 【_Random】 【_RandomString】 2、關於【_
matlab生成隨機數的rand、randi和randn三種形式
matlab中關於隨機數的產生有3種庫函式,下面我們來看看它們的形式: 1、rand(…) 它是生成0~1之間(開環,不包含0和1兩個數)均勻分佈的偽隨機數,也就是無窮次試驗其中每個數產生的概率是一樣的。 它的函式格式如下: <span sty
java——自己寫一個生成隨機數的方法
在java中,主要有三種獲得隨機數的方法: 1、Math.random();這個方法生成的是0~1之間的一個double; 2、java.util的Random類,建立該類的物件來產生隨機數(int、float、double、long) 3、System類中的currentTimeMilli
SecureRandom生成隨機數超慢i及其解決方法
原文如下:https://blog.csdn.net/upshi/article/details/54907464 有2種解決方案: 方法1:在Tomcat環境中: 可以通過配置JRE使用非阻塞的 Entropy Source: 在ca
生成隨機數的兩種方法
方法一、Math類有個random方法可以實現隨機數的生成。Math.random()返回的是:返回帶正號的 double 值,該值大於等於 0.0 且小於 1.0。在此基礎上我們修改下就能得到一定範圍的隨機數: (int)(Math.random()*10)
用python生成隨機數的幾種方法
今天學習了用python生成模擬資料的一些基本方法和技巧,寫成部落格和大家分享一下。 本篇部落格主要講解如何從給定引數的的正態分佈/均勻分佈中生成隨機數以及如何以給定概率從數字列表抽取某數
利用Math.Random()方法來生成隨機數。(轉)
在Java語言中生成隨 機數相對來說比較簡單,因為有一個現成的方法可以使用。在Math類中,Java語言提供了一個叫做random的方法。通過這個方法可以讓系統產生隨機 數。不過預設情況下,其產生的隨機數範圍比較小,為大於等於0到小於1的double型隨機數。雖然其隨機數產生的範圍比較小,不能夠滿足日常的需
C語言 rand函式生成隨機數
在實際的專案中,有時候需要生成一個隨機數,在C語言中隨機數的生成可以通過使用rand函式來實現。 rand函式包含在標頭檔案stdlib.h裡,因此使用rand函式需要宣告包含stdlib.h。 #include<stdlib.h> #inc
C語言和java中生成隨機數的原理和方法
C語言 一.函式 1:int rand(void) 該函式會產生一個[0,RAND_MAX]的偽隨機數,那什麼是偽隨機數? 相當於一個序列a1-an,第一次使用會返回a1, 第二次使用會返回a2….第n次返回an,這樣每次呼叫rand()都能產生一個不同
Qt生成隨機數的方法
1.生成隨機數 生成隨機數主要用到了函式qsrand和qrand,這兩個函式在#include <QtGlobal>中,qsrand用來設定一個種子,該種子為qrand生成隨機數的起始值。比