小编APA*_*APA的帖子

均匀分布:错误或悖论

想象一下10辆车随机,均匀分布在一个长度为1的圆形轨道上。如果位置用[0,1>范围内的C double表示,那么它们可以排序,车之间的间隙应该是车的位置前面减去后面汽车的位置。最后一个间隙需要添加 1 来解释不连续性。

在程序输出中,最后一列的统计数据和分布与其他列有很大不同。行正确地加到 1。这是怎么回事?

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>

int compare (const void * a, const void * b)
{
  if (*(double*)a > *(double*)b) return 1;
  else if (*(double*)a < *(double*)b) return -1;
  else return 0;
}

double grand_f_0_1(){
  static FILE * fp = NULL;
  uint64_t bits;

  if(fp == NULL) fp = fopen("/dev/urandom", "r");
  fread(&bits, sizeof(bits), 1, fp);
  return (double)bits * 5.421010862427522170037264004349e-020; // https://stackoverflow.com/a/26867455
}

int main()
{
  const int n = 10;
  double values[n];
  double diffs[n]; …
Run Code Online (Sandbox Code Playgroud)

c random debugging paradox uniform-distribution

6
推荐指数
1
解决办法
129
查看次数

标签 统计

c ×1

debugging ×1

paradox ×1

random ×1

uniform-distribution ×1