1
kojp OP 好吧。。继续自言自语。
我有一个很笨拙 的思路,但是必须得借助一下文件的读取。 我把$luobo里面的五个要萝卜,放到一个文件里面txt或者xml 然后,不管哪个客户端来访问。我给出的都是第一个萝卜。给完以后,我就把这个萝卜给del掉。 等到五个萝卜都没了。我再重新生成这个文件。里面继续放上五个萝卜 。 |
2
kojp OP 有木有大神敢提示一下,数组的array_shift 或者unshift。或者pop之类的能搞定不?不借助读写服务器上面的文件。。。
|
3
luin 2012-08-11 22:36:52 +08:00
如果数据量足够大,rand的算法越好结果就越平均。
如果你要10个IP的情况下每个萝卜出现的次数一样(这个要和概率区分开...概率永远是一样滴),那么可以生成一个萝卜表,比如“3042103124...”,这样按顺序读入就可以实现你要的随机了。 很多游戏的随机数就是这么实现的。 |
4
demon386 2012-08-11 22:39:11 +08:00 1
@kojp 用一个10个元素的数组,其中你的这5个元素每个重复两次。
生成一个1-10的随机全排列。然后按全排列的顺序取,用完了再生成一个。 这样可以保证5个元素在10次里都被用到2次,同时顺序是随机的。 |
5
kran 2012-08-11 22:40:58 +08:00 1
非大神凑个热闹
这个跟语言也有关系。。 起码php没有应用层级的变量(启动后常驻的),。net有这东西 可以用内存数据库吧 memcached,redis? 计数器%5 |
6
kojp OP |
8
benzhe 2012-08-11 22:44:19 +08:00
感觉不借助数据储存是不行滴,因为有公共数据,除了文件读写还可以用数据库,memcache,甚至强制同session存储数据。俺很菜,上面仅供参考
|
9
kojp OP |
11
demon386 2012-08-11 22:49:20 +08:00
@kojp 比如生成某个随机排列
2 3 1 4 5 9 6 8 10 7 这是个数组,作为index,按这个index的顺序去取元素内容就行了,用完就把当前index pop出来。等这个index数组用完了,就重新生成一个。 至于生成随机排列的方法,网上搜random permutation就有了。 |
12
lwjefSub 2012-08-11 22:50:56 +08:00
记数 =2 了就不取 全部 =2 重置
|
13
lwjefSub 2012-08-11 22:52:26 +08:00
好像还是存储向的 我太不靠谱了
|
15
kran 2012-08-11 23:33:03 +08:00
我倒认为搞随机数是没有必要的,访问网站的人流就是最随机的,只要你能按顺序发放,相对每个人就都是随机的了。
|
16
tywtyw2002 2012-08-12 02:30:40 +08:00
如果要求数量 只能写hash 指针指向下个 不过写hash还要锁文件。。。。
|
17
hzlzh 2012-08-12 12:57:47 +08:00
把5*2的随机数压栈,然后index逐个pop出来,就保证了每个2次。
|