【问题标题】:how to generate random numbers which do not start from 0 ( 50 - 100) etc? [closed]如何生成不从 0 ( 50 - 100) 等开始的随机数? [关闭]
【发布时间】:2012-12-08 18:41:14
【问题描述】:

请告诉我,他们有什么方法可以用 c 语言生成随机数程序,它生成 "50 到 100" 随机数不是从 0 到 100 ? 不使用 if else 条件??

【问题讨论】:

  • 生成一个从050的随机数并加上50?
  • 谢谢先生!!如果我想生成 65 到 90 之间的随机数,我该怎么办??
  • @Maqbool Ur Rahim Khan:这是个玩笑吗?你有一个m.buettner的解决方案,你不能自己做一个简单的数学运算吗(90-65 = 25,所以你需要生成0到25之间的随机数并加65)?
  • yupppp 对不起,@a1ex07 你的回答对我有很大帮助??
  • @BrianRoach 你说得对,我应该先学数学 :(

标签: c random numbers


【解决方案1】:

“%”运算符返回整数除法的余数。因此,如果您说 number%5,则该值可能在 0 和 4(包括在内)之间。
所以 rand()%51 返回一个从 0 到 50 的数字,加上 50,你就会得到你想要的。
定义一个宏:

#define RandomNumberInInterval(min,max) rand()%(max-min+1)+min

【讨论】:

  • 非常感谢您的回答!
  • 几个重要的注意事项:1. 如果max - min > RAND_MAX 2. 使用模运算会导致不均匀分布,随着max - min 的增加而恶化...跨度>
  • 您还应该检查程序员是否有良好的意识。
  • @RamyAlZuhouri:好感:没有这样的文件或目录 :-)
【解决方案2】:

0 - 50 生成它并求和 50。

number = ( rand() % 51 ) + 50;

【讨论】:

    【解决方案3】:

    是的,因为您始终可以将 if (foo) { ... } 替换为 while (foo) { ... break; }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-17
      • 1970-01-01
      • 1970-01-01
      • 2016-10-16
      • 1970-01-01
      • 1970-01-01
      • 2015-12-25
      • 2012-12-10
      相关资源
      最近更新 更多