如何在随机数生成中包含负数

Nik*_*ita 0 c visual-studio-2013

这是从 (-1, 36) 生成随机数的正确方法吗?:

  #include <stdio.h>
  #include <stdlib.h>
  #define RAND_MAX 36

  int main()
  {           
      int num = (-1) + (36 + 1) * (rand()/(RAND_MAX+1));
      printf("%d\n", num);
      return 0;
  }
Run Code Online (Sandbox Code Playgroud)

Som*_*ude 6

你知道如何获得零到范围内的随机数(范围内你想要的最大数字N在哪里N)?那么你知道如何生成范围数量-NN为好。

只需生成范围0为 to2*N并减去 的数字N


更新:要在-1to范围内生成一个数字36,那么您应该从0to生成37并减去1

不过这两种情况的原理是一样的。