生成不同的随机数

新手上路,请多包涵

我想生成不同的随机数。我使用了 srand 和 rand ,但在我的输出中有些数字是相同的。

这是我的输出: 在此处输入图像描述

如何使用 srand 生成不同的数字?

 #include<iostream>
#include<time.h>
#include <windows.h>

int main(){
    time_t t;
std::vector<int> myVector;
srand((unsigned)time(NULL));

for (int i = 0; i < 40; i++){

    int b = rand() % 100;
    myVector.push_back(b);
    std::cout << myVector[i] << std::endl;
}
Sleep(50000);

}

原文由 Michelle 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 494
1 个回答

一种简单的方法是将 0-99 之间的所有数字添加到向量中并对其进行洗牌,然后您可以获得所需数量(最多 100 个)的非重复随机数。

 #include <algorithm>
#include <chrono>
#include <iostream>
#include <random>
#include <vector>

int main(void) {

    std::vector<int> numbers;

    for(int i=0; i<100; i++)       // add 0-99 to the vector
        numbers.push_back(i);

    unsigned seed = std::chrono::system_clock::now().time_since_epoch().count();
    std::shuffle(numbers.begin(), numbers.end(), std::default_random_engine(seed));

    for(int i=0; i<40; i++)        // print the first 40 randomly sorted numbers
        std::cout << numbers[i] << std::endl;

}

原文由 Joachim Isaksson 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏