0

我试图播种 rand() 函数

为什么我总是用 rand() 得到相同的随机数序列?

#include "stdafx.h"
#include <cstdlib>
#include <fstream>
#include <iostream>
#include <string>
#include <windows.h>
#include <string> 
#include <shlobj.h>
#include <Shlwapi.h>
#include <stdio.h>
#include <aclapi.h>
#include <tchar.h>
#include <iostream>
#include <fstream>
#include <curl/curl.h>
#include <future>
#include <stdlib.h>
#include <random>
#include <ctime>
#include <time.h>  
#include <Lmcons.h>
srand(time(NULL)); 
int random_integer = std::rand(); 

但是 srand(time(NULL)) 返回:

错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数

错误 C2365:“srand”:重新定义;以前的定义是“功能”

4

1 回答 1

3

现在的问题是调用srand(time(NULL));需要进入函数内部——在全局范围内,你不能只编写将执行的代码——你只能声明/定义函数、变量等。

定义可以包括初始化器,这是允许int random_integer = std::rand();工作的。

一种明显的治疗方法:

int radom_integer;

int main() { 
    srand(time(NULL));
    random_integer = rand();
    // ...
}

也就是说,您通常最好使用 C++ 随机数生成器类而不是srand/ rand

于 2013-09-13T04:27:33.687 回答