Mar*_*s.S 3 c random double random-sample uniform-distribution
我想在区间 [0,1] 中生成一个随机的实数。我想为数字设置一个指针,比如说n,所以每当我声明时n,它都会被引用到随机生成的数字。
我在 StackOverflow 和 Google 上搜索过,但其中大部分是针对 C++ 或整数的。
我已经尝试过在答案中向我建议的这段代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
double n;
double get_random() { return (double)rand() / (double)RAND_MAX; }
n = get_random();
printf("%f", n);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是,我只能得到一个值 0.00000000。
我怎样才能修复我的程序?
您可以使用:
#include <time.h>
srand(time(NULL)); // randomize seed
double get_random() { return (double)rand() / (double)RAND_MAX; }
n = get_random();
Run Code Online (Sandbox Code Playgroud)
srand()设置用于rand生成伪随机数的种子。如果您srand在第一次调用之前没有调用rand,就好像您已经调用过一样srand(1)(作为默认值)。
如果要排除 [1],请使用:
(double)rand() / (double)((unsigned)RAND_MAX + 1);
Run Code Online (Sandbox Code Playgroud)
完整解决方案:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
double get_random() { return ((double)rand() / (double)RAND_MAX); }
int main()
{
double n = 0;
srand(time(NULL)); // randomize seed
n = get_random(); // call the function to get a different value of n every time
printf("%f\n", n); // print your number
return 0;
}
Run Code Online (Sandbox Code Playgroud)
每次运行它时,您都会得到不同的n.
| 归档时间: |
|
| 查看次数: |
5447 次 |
| 最近记录: |