隨機種子


random seed

1.python

隨機選擇&生成隨機數

使用random模塊
random模塊是采用Mersenne Twister 梅森旋轉算法來計算隨機數,是一個確定性算法

import random

values=[1,2,3,4,5,6]
random.choice()   #隨機挑選元素

random.choice(values)
>3

random.sample()  #隨機挑選多個元素
random.sample(values,2)
[4,3]

random.shuffle()   # 洗牌函數

random.randint()  # 隨機整數,需要參數
random.random() # 0-1之間均勻分布浮點數
random.uniform() # 計算均勻分布值
random.gauss()    #計算正態分布值

random.seed(1235) # 可以修改初始的種子值

2.C++

需要用到rand()函數和 srand()函數

  • 1.只產生一個隨機數,不需要設定的范圍

rand()會生成一個隨機數,范圍在0~RAND_MAX
RAND_MAX 定義在ctdlib中.RAND_MAX=2147483647 2^31

#include<cstdlib>
#include<iostream>
#include<ctime>       // include<time.h> in c language
using namespace std;
void Random()
{
    for(int i=0;i<10;i++)
       cout<<rand()<<endl;
}
  • 2.生成一個在一定范圍的數
//最直接的輸出
rand()%x          //x代表要輸出數的范圍
// 為了方便可以使用宏
#include<cstdlib>
#include<iostream>
#include<ctime>       // include<time.h> in c language
#define random(x)  (rand()%x)
using namespace std;
void Random()
{
    for(int i=0;i<10;i++)
       cout<<random(100)<<endl;
}
// 輸出10個在0~100之間的數
  • 3.隨機產生的數實習每次運行都是隨機的

需要借助srand()函數

srand()用來設置rand()產生隨機數的隨機數種子

調用rand()函數產生隨機數前,必須先利用srand()設好隨機數種子(seed), 如果未設隨機數種子, rand()在調用時會自動設隨機數種子為1

隨機數種子都自動設成相同值1 ,進而導致rand()所產生的隨機數值都一樣

借助時間函數time(0)作為隨機種子,實現輸出結果不可預測

void srand( unsigned seed );   //函數定義類型

#include <cstdlib>
#include <iostream>
#include <ctime>
 
int main() 
{
    std::srand(std::time(0)); //use current time as seed for random generator  ,一般默認都是設置為time(0)
    int random_variable = std::rand();
    std::cout << "Random value on [0 " << RAND_MAX << "]: " 
              << random_variable << '\n';
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM