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';
}
