It has been 646 days since the last update, the content of the article may be outdated.

C关于seed

已知seed,就可以得到通过seed获得的多个随机数。
脚本如下:

bash
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
#include<stdlib.h>
#include <time.h>
int main(){
int a[1000]={0};
srand(0);//0为种子值
for(int i=0;i<=9;i++){
a[i]=rand()%255;//计算公式
printf("%d \n",a[i]);
}
}

Python关于seed

初始化随机数生成器:random.seed(a=None)

如果 a 被省略或为 None ,则使用当前系统时间
每给定一个seed,它会生成一个序列,如序列X: 0.1,3.2,1.5,9.7…
你每次random.random()只是按顺序取了一个X中的点
对于同一个seed,它产生的序列是固定的,所以随机化结果必然相同,而系统时间在不断变大,所以产生的序列必然不同

bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import random
print("不加seed语句时,默认是用random.seed()") # 即使用当前的系统时间为seed
print(random.random())
print(random.random())
print(random.random())
print("seed=45")
random.seed(45) # 指定seed为45
print(random.random()) # 取seed=45产生序列的第一个元素
print(random.random()) # 取seed=45产生序列的第二个元素
print(random.random()) # 取seed=45产生序列的第三个元素

print("\nseed=45")
random.seed(45)
print(random.random())
print(random.random())
print(random.random())

print("\nseed=当前系统时间")
random.seed() # 默认是当前系统时间
print(random.random())
print(random.random())
print(random.random())

print("\nseed=当前系统时间")
random.seed()
print(random.random())
print(random.random())
print(random.random())

得到的结果:
不加seed语句时,默认是用random.seed()
0.20832862243131767
0.4210403813034972
0.4153058477463908
seed=45
0.2718754143840908
0.48802820785090784
0.08187934237116656

seed=45
0.2718754143840908
0.48802820785090784
0.08187934237116656

seed=当前系统时间
0.9664157011016027
0.9963620166960119
0.00929090874812366

seed=当前系统时间
0.1560896344276015
0.26724242598166137
0.5839125852630351