随机添加-1,0或1到C中的数字

rus*_*ss0 3 c random numbers generator range

我试图找出一种方法,我可以使用srand和rand随机生成-​​1,0或1.然而,每当我这样做时,我只能得到生成范围内的值,而不是-1或1.

这是我试过的:

   int value;
   srand(time(NULL));
   value=2*rand()/(RAND_MAX)-1;
Run Code Online (Sandbox Code Playgroud)

但是,执行时,我总是生成0.我希望能够偶尔生成-1和1.问题是我必须使用rand和srand,作为规范的一部分.任何帮助将不胜感激,并提前感谢:).

Som*_*ude 8

怎么样

value = (rand() % 3) - 1;
Run Code Online (Sandbox Code Playgroud)

表达rand() % 3产生之间的随机数02(含),然后减去一个之间得到-11(含).

  • 当"RAND_MAX%3"不是2时,这种方法存在一个非常小的偏差.当这是一个问题时,修复通常会在它们发生"rand()"可能带来的最后一个或两个有问题的值时丢弃. (4认同)