随机化数字而没有任何std-函数

时间:2016-08-23 07:08:08

标签: c++ c++11 visual-c++

我需要没有任何std函数的随机数的帮助。我怎样才能做到这一点?我知道我可以使用随机函数来完成它:

v2 = rand() % 36 + 1; 

将随机化1-35之间的数字,但rand()函数属于“(stdlib.h)”std。

2 个答案:

答案 0 :(得分:1)

我在stackoverflow上发现了类似的问题:How do I generate random numbers without rand() function?

我在0-35和最终解决方案之间进行了一些修改:

#include<stdio.h>
#include<time.h>
int main()
{
    int num = 36;
    time_t sec;
    sec=time(NULL);
        for(;;)
        {
            sec=sec%3600;
            if(num>=sec)
            {
            printf("%ld\n",sec);
            break;
            }
            sec=sec%num;
        }
    return 0;
}

我们<time.h>使用time代替<stdlib.h>使用rand() 如果我们不想要0作为答案,那么我们可以添加

while(sec==0)
{
    sec=time(NULL); 
}

在此声明之前:sec=sec%3600;

答案 1 :(得分:0)

您可以使用硬件随机数生成器:

#include <iostream>
#include "immintrin.h"

int main()
{
    unsigned int val;
    _rdrand32_step(&val);
    std::cout << val;
}