Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-randomint()应该等于C-rand()_Python_C_Random - Fatal编程技术网

Python-randomint()应该等于C-rand()

Python-randomint()应该等于C-rand(),python,c,random,Python,C,Random,我有以下C程序: #include <stdio.h> #include <time.h> int main(int argc, char *argv[]){ srand(time(NULL)); printf("%d", rand()); } C程序中的RAND_MAX定义为2147483647。如果我在同一秒钟内启动两个程序,它们应该打印相同的随机数,但事实并非如此 你知道为什么吗?有没有实现不同的方法来获取伪随机数?种子绝对是一样的 他们唯一能保证

我有以下C程序:

#include <stdio.h>
#include <time.h>
int main(int argc, char *argv[]){
    srand(time(NULL));
    printf("%d", rand());
}
C程序中的RAND_MAX定义为2147483647。如果我在同一秒钟内启动两个程序,它们应该打印相同的随机数,但事实并非如此


你知道为什么吗?有没有实现不同的方法来获取伪随机数?种子绝对是一样的

他们唯一能保证的是你会得到一个伪随机数。你基本上无法保证它将如何工作

即使您在两个不同的编译器上编译相同的C程序,也不能保证在调用rand时得到完全相同的结果


你基本上想知道为什么在掷两个不同的骰子时,即使你以完全相同的方式掷骰子,结果也不一样。嗯,它们是不同的,结果也是不同的。

C的随机数生成器根本没有标准化。C11标准的修订说明如下:

对于所产生的随机序列的质量没有保证,并且已知一些实现产生具有令人不安的非随机低阶位的序列。有特殊要求的应用程序应使用 已知足以满足其需求的发电机


Python就是这些应用程序之一:Python选择使用随机数生成器,也称为Mersenne Twister。C库不太可能使用MT19937-32进行rand实现,并且使用相同的种子设定例程。

是什么让您认为它们是以相同的方式实现的?似乎实现了的某些版本。您的C库要么使用此RNG的不同版本,要么完全使用其他RNG。就这些。有几十种随机数生成算法;如果这个测试成功的话,我会更惊讶。一个更简单的测试方法是用一个常数而不是时间来播种。只需使用seed0。
import random
import time
random.seed(int(time.time()))
print (random.randint(0, 2147483647))