首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >随机数生成

随机数生成
EN

Stack Overflow用户
提问于 2012-04-13 22:54:16
回答 2查看 355关注 0票数 1

在一组10人生成的答案中,生成10个不应该匹配的唯一数字的方法应该是什么?

EN

回答 2

Stack Overflow用户

发布于 2012-04-13 23:06:39

这个有一个很好的解决方案。我假设你必须以随机的方式给出数字1-10到10个不同的人(但如果你有10个(或更多)不同的、不连续的数字,这个原则也适用)。

  • 将数字排列在数组中。
  • 使用随机算法对数组中的元素进行随机排列。混洗算法(混洗算法:http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle)

  • 从数组中读取前10个值,并将它们分配给10个人中的每个人。
票数 3
EN

Stack Overflow用户

发布于 2012-04-14 04:31:48

您可以使用OS工具来生成GUID (全局唯一标识符)。

GUID是一个32位的十六进制,看起来像这样:{21EC2020-3AEA-1069-A2DD-08002B30309D} (无耻地从GUID wikipedia article窃取)。这使它成为一个128位的数字。现在,它有了所有那些恼人的字符,但没有什么能阻止你删除无关的字符,并从十六进制转换,并将其视为普通数字。

出于实际原因,您需要注意128位数字在某些语言中有点笨拙,比如C99。但是你仍然可以使用编译器扩展(GCC有__uint128_t),或者以其他方式处理它。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10143163

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档