我需要没有任何std函数的随机数的帮助。我怎样才能做到这一点?我知道我可以使用随机函数来完成它:
v2 = rand() % 36 + 1;
将随机化1-35之间的数字,但rand()
函数属于“(stdlib.h)”std。
答案 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;
}