1.指定范围,可小数点后两位,比如范围为0.01-19999.00
2.已经出现过的数字不能在出现,比如已经出现过1.66,23.44,555.33等多个数字
3.随机生成一个在范围内且没出现过的数字
一般的实现方式就是在范围内随机生成一个数字,然后在出现过的数字中循环对比是否重复,如果重复则重新生成,然后在对比,不断循环,直到生成的数字满足条件。
有没有其他更好的方法?有这样的函数吗?
1.指定范围,可小数点后两位,比如范围为0.01-19999.00
2.已经出现过的数字不能在出现,比如已经出现过1.66,23.44,555.33等多个数字
3.随机生成一个在范围内且没出现过的数字
一般的实现方式就是在范围内随机生成一个数字,然后在出现过的数字中循环对比是否重复,如果重复则重新生成,然后在对比,不断循环,直到生成的数字满足条件。
有没有其他更好的方法?有这样的函数吗?
不太清楚你用的场景,理论说大多数用fpm,这种情况下一次运行就销毁,程序是不可能记住以往生成过的数字的,必须借助第三方存储机构才行,比如redis甚至是传统数据库。
如果你用常驻内存型的服务,理论上是可以借助php数组来记录保存已经生成过的数字。由于你要求的没有任何其它保证唯一的因素。所以,在我看来,似乎除了你说的办法外,也没有更好的做法。
如果你能加入时间因素,则时间因素天生是具备唯一性的。
2 回答1.6k 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
2 回答992 阅读✓ 已解决
2 回答1.1k 阅读
1 回答937 阅读
1 回答893 阅读
1 回答888 阅读
一般方法指的是这个吗:
其他方法:
array_rand()
函数随机取一个,然后在原来数组中删除shuffle()
函数打乱, 使用array_pop()
不断取随机数