随机数 65-90[az] 或 97-122[AZ]
我需要 C 中的一个方法,十进制 65-90 [a
- z
] 和十进制 97-122 [A
- <代码>Z]返回。如果我调用该方法,该方法必须是一个不同的数字,返回他之前给出的内容,我如何在 C 中执行此操作?
I need a method in C that the random number between decimal 65-90 [a
- z
] and decimal 97-122 [A
- Z
] returns. If I call the method the method must be a different number give back what he has previously given How can I do this in C ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
你能做一个0到52之间(不包括52)的随机数吗?
做吧!将结果加上 65。如果该值为 91 或更大,则将第二个结果加 6。 Voilà!
哦...如果数字与上次的数字相同(您将最后一个数字保存在静态变量中,不是吗?),请再做一次:)
Can you do a random number between 0 and 52 (excluding 52)?
Do it! Add 65 to the result. if the value is 91 or greater, add 6 to the 2nd result. Voilà!
Ohh ... if the number is the same as the one from last time (you saved last number in a static variable, didn't you?), do it again :)
给定一个返回 [0,n) 范围内的随机整数的函数
random_in_range
:(random_in_range(n)
的简单实现将返回rand() % n但这不会返回均匀分布的整数。)
Given a function
random_in_range
that returns random integers in the range [0,n):(A simple implementation of
random_in_range(n)
would returnrand() % n
. That wouldn't return uniformly distributed integers, though.)更新 2
根据 Interjay 的评论再次更新。
更新
根据 Interjay 的评论进行了更改。还更改了 pickChar,以便我们不依赖于特定的编码。
警告:不建议使用
%
运算符将rand
的结果映射到不同的范围。低阶位模式不能保证均匀分布,并且您可能会得到非正态分布的值。它对于课堂作业来说已经足够好了,但是下面的过程应该会给出更好的结果:UPDATE 2
Again updated per Interjay's comment.
UPDATE
Made changes per Interjay's comment. Also changed pickChar so that we aren't relying on a particular encoding.
Warning: using the
%
operator to map the results ofrand
to a different range is not recommended. Low-order bit patterns are not guaranteed to be evenly distributed, and you could get a non-normal distribution of values. It works well enough for class assignments, but the procedure below should give better results: