1. 程式人生 > >srand()和rand()生成隨機數

srand()和rand()生成隨機數

#include <iostream>
#include <time.h>
using namespace std;

void main()
{
    //srand(1);
    srand(time(0));
    cout << rand()<<endl;
    system("pause");
}

執行程式的結果如下:(執行3次)
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
可以看到,每次執行程式都會得到不同的結果。
但是在使用srand(1)初始化種子時,每次執行程式得到的隨機數結果都一樣。如下:(執行兩次)
這裡寫圖片描述
這裡寫圖片描述
這裡對程式中用到的產生隨機數的函式進行解釋。
1,srand()函式:隨機數發生器的初始化函式,需要提供一個種子,這個種子會對應一個隨機數。如果使用相同的種子,rand() 函式會出現一樣的隨機數。預設種子數是1,即srand(1)。
2, rand()函式:偽隨機數發生器,需要先呼叫srand初始化,一般用當前日曆時間初始化隨機數種子,這樣每行程式碼都可以產生不同的隨機數。
3,隨機數產生的原理:隨機數中的變數種子rand初始會賦值給holdrand,然後holdrand和一個公式計算出新的隨機數並賦值給holdrand再返回,迴圈產生隨機數,每次得到的結果只與上次隨機數的值有關,如果想要每次生成的新隨機數和上次隨機數沒有關聯,可以通過每次利用(srand((unsigned)time(0)))改變種子進而初始化holdrand得到隨機數。

生成N個不同值的隨機數
關於srand(time(0)))和rand()的解釋

相關推薦

srand()rand()生成隨機數

#include <iostream> #include <time.h> using namespace std; void main() { //srand(1);

VS2010中srandrand產生隨機數的用法

原文地址:https://blog.csdn.net/na_beginning/article/details/39932535 1.VC和VS2010中srand()和rand()函式的區別        在VC中rand(

C語言中的隨機數 srand ( ) rand ( )

在C語言中,生成一個隨機數,一般利用兩個函式,即void srand ( unsigned int seed ) 和 int rand ( void )。     srand() 函式用於生成一個隨機數種子,種子的值等於引數seed,這個引數由我們指定一個

C語言/C++中的srand()rand()函式

C語言C++中的srand()和rand()函式 標頭檔案: rand和srand包含在標頭檔案中的<stdlib.h>(c++中使用)中,rand和srand用於產生隨機數。 如: #include<stdio.h> #include&

採用rand生成隨機數方法

我們知道rand()函式可以用來產生隨機數,但是這不是真正意義上的隨機數,是一個偽隨機數,是根據一個數(我們可以稱它為種子)為基準以某個遞推公式推算出來的一系列數,當這系列數很大的時候,就符合正態公佈,從而相當於產生了隨機數,但這不是真正的隨機數,當計算機正常開機後,這個種

srand() rand()

RAND_MAX 是 VC 中 stdlib.h 中巨集定義的一個字元常量: #define RAND_MAX 0x7FFF 其值為 32767 通常在產生隨機小數時可以使用 RAND_MAX 。 我們要選取我們範圍內的 隨機數時可以使用一下方法。 1 、假設取值範圍是 0

matlab生成隨機數rand、randirandn三種形式

matlab中關於隨機數的產生有3種庫函式,下面我們來看看它們的形式:   1、rand(…)    它是生成0~1之間(開環,不包含0和1兩個數)均勻分佈的偽隨機數,也就是無窮次試驗其中每個數產生的概率是一樣的。    它的函式格式如下: <span sty

ruby 生成隨機數 隨機字串

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

生成隨機數字母(任意長度)

  Java隨機數生成器:Random,ThreadLocalRandom,SecureRandom @Test public void getItemID(int n) {//n需要的長度 String val = ""; Random random = new Ra

Python 用生成隨機數md5加密----hashlib模組

hashlib主要提供字元加密功能,將md5和sha模組整合到了一起,支援md5,sha1, sha224, sha256, sha384, sha512等演算法. 一、固定字串加密 import hashlib md5_str = hashlib.md5() md5_

c# 生成指定範圍的數字字母組合隨機數

private static char[] constant =  {  '0','1','2','3','4','5','6','7','8','9',  'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o'

通過若干次 rand() 使得隨機數超過 RAND_MAX 的隨機次數的期望

最近看到一個程式碼,感覺十分有趣, M a r

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()都能產生一個不同

java利用數字字母隨機組合生成隨機數

思路:如果區分大小寫的話,那麼大寫算是一類,小寫算是一類,數字算是一類, 那麼通過    Random rand=new Random();這行程式碼隨機生成代表每一類的的生成器。 如果隨機產生的值為0,則產生的是數字,如果隨機產生的是1,則代表要產生大寫字母, 如果隨機產生的值

tensorflow 生成隨機數 tf.random_normal tf.random_uniform tf.truncated_normal tf.random_shuffle

____tz_zstf.random_normal從正態分佈中輸出隨機值。.random_normal(shape,mean=0.0,stddev=1.0,dtype=tf.float32,seed=None,name=None).shape:一個一維整數張量或Python陣

Linux下生成隨機數隨機字串

1、生成長度為32的隨機字串 head -c 32 /dev/random | base64 該方式產生的隨機數效果比較好,但是,當不能產生隨機數時,它會阻塞在那裡,也就是為阻塞程式的執行 2、用/dev/urandom檔案產生 head -c 32 /

C++隨機數 (rand srand)用法,注意隨機數種子每次要更新。

計算機的隨機數都是由偽隨機數,即是由小M多項式序列生成的,其中產生每個小序列都有一個初始值,即隨機種子。(注意: 小M多項式序列的週期是65535,即每次利用一個隨機種子生成的隨機數的週期是65535,當你取得65535個隨機數後它們又重複出現了。) 我們知道rand(

c語言中關於srand((unsigned)time(NULL))rand的區別

一直以為rand()直接生成不同的隨機數,實驗結果不對才搜了下原因,轉載分享下... 可以認為rand()在每次被呼叫的時候,它會檢視: 1) 如果使用者在此之前呼叫過srand(seed),給seed指定了一個值,那麼它會自動呼叫 srand(seed)一次來初始

java實現電腦猜隨機數生成1到100

public class text{public static void main(String[]args){Scanner in=new Scanner(System.in);System.out.println("請猜一下電腦隨機生成的數是多少(1-100)");i