在我的android应用程序中,我需要生成随机数,
我的应用程序将在局域网中的许多android设备上运行,并使用随机数相互通信,我想生成这样一个随机和唯一的数字,在局域网中的任何应用程序中都不应该是相同的。
它应该是独特的,每次任何用户将产生它,在他的设备和整个局域网。
如果有什么想法,我会很感激的?
发布于 2013-09-08 20:24:28
实际上我觉得你的要求很矛盾。有效的随机序列不会产生唯一的值,否则就不是随机的。我的意思是,你根本不需要任何随机的东西,你只需要数字是唯一的。
要生成每个网络节点的唯一编号是非常容易的,将机器、ip或mac地址与时间结合在一起是很容易的。要获得时间,只需执行System.currentTimeMillis();以获得您的ip地址,然后使用这里的示例如何在Java中获取mac地址。把这两个数字结合起来就能买到独一无二的东西。
发布于 2013-09-08 20:02:03
考虑到问题注释中的说明,下面是我要做的工作:构建一个(确定性)方案,以32位整数交换位。你想换多少就换多少。管这叫“扰频器”。
然后通过整数计数;在每个整数上调用‘扰码器’。
由于交换方案的确定性,唯一性得到了保证,将是快速的,但并不是冷冻安全的。但是请注意,一般来说,这将具有很差的统计随机性,所以当需要均匀分布的随机数时(如Monte ),不要使用它。但我觉得应该能满足你的要求。
发布于 2013-09-08 20:40:37
我对Android不熟悉。但是,您的问题似乎是由UUID或通用唯一标识符解决的。一个快速的谷歌产生此页。
特别是,您正在寻找方法randomUUID(),它生成一个变体2,version 4(随机生成的编号) UUID,如RFC 4122所示。
https://stackoverflow.com/questions/18687921
复制相似问题