【发布时间】:2016-05-09 02:32:59
【问题描述】:
我想在区间 [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;
}
但是,我只能得到一个值 0.00000000。
如何修复我的程序?
【问题讨论】:
-
当您尝试使用
%f来printf和unsigned int时,您的编译器会报错吗?也许您打算将r声明为double。 -
您的
while循环无效,因为y = RAND_MAX + 1来自rand的返回值将始终为< y。 -
您能否详细说明“我想为数字设置一个指针,比如 n,所以每当我说 n 时,它将被称为随机生成的数字”是什么意思?这怎么不只是简单的指针赋值?
-
您可以将无符号
rand值缩放为您范围内的实数,但这些值不会按照您的要求均匀分布。粒度还是一样的:只会生成RAND_MAX不同的值。 -
抱歉不清楚...我是C编程的初学者,所以我只是去google并找到了rand()命令...
标签: c random double random-sample uniform-distribution