- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以,我正在尝试制作一款角斗士游戏,其中玩家将是拉尼斯塔。我追求的是现实主义,所以角斗士们会死在竞技场里,这就需要大量新的“新兵”涌入。
目前,每个新创建的角斗士都有 21 种属性,从力量和敏捷等数值到阵营和名称文本。这些是通过随机函数计算的。名称和派系我从数组中随机挑选(至少对于名称)相对较大的真实名称列表。数值就是 rand(x,y)。
在添加名称和派系数组之前,我尝试多次运行创建角斗士的文件,并使用 while 循环创建 10000 个角斗士,据我所知,没有出现任何克隆。现在,也可以从随机中选择名称(如上所述),如果我创建少量角斗士,那么一切都会正常工作,但是一旦我在 while 循环中使用了数百个角斗士,或者如果我运行文件几次在 while 循环中连续多次使用低至 50 的数字,我会得到克隆。
拥有 21 个属性,其中大多数有 100 个不同的值,获得克隆并不是偶然的。谁能告诉我出了什么问题吗?这可能会毁了我的游戏,在克服了一些(简单的)挑战后我才变得乐观起来。
哦,是的,具有属性的角斗士会自动放入 mysql 数据库中。
编辑(更新):我回到我的东西,删除了命名和派系随机函数,并将所有设置为“s”。从 s 派别中创建了 10000 名名为 s 的角斗士,但似乎只有 0 个克隆人 - 没有人拥有完全相同的统计数据。
重新激活随机名称功能。运行文件,创建 200 名角斗士。看不到克隆体。又跑了一次。每个角斗士都有一个克隆体。然后再次。现在角斗士有两个克隆体。
这个随机函数根本不是随机的,是吗?
编辑(更新 2):再次测试它,一次激活一个先前排除的随机函数之一。似乎是名字和姓氏功能把事情搞砸了。另外,从我上次的测试来看,似乎有一个模式,角斗士 id 209 等于 737,77 等于 605 和 1133,148 等于 676,772 等于 244,等等。
737-209、605-77、1133-605、676-148、772-244 都有一个共同点。它们都等于 528。
这根本不是随机的。
我用于获取名称的函数类似于:
$surname=surname($faction) //surname is a function, using the variable $faction
function surname($faction) {
if ($faction=="Roman") {
$nomen = array("Aburius", "Accius", [...]);
$cognomen = array("Zeno", "Zonsimus", [...]);
$randnomen=array_rand($nomen,1);
$randcognomen=array_rand($cognomen,1);
$merge=array($nomen[$randnomen],$cognomen[$randcognomen]);
$surname=implode(" ",$merge);
return $surname;
}
澄清一下:$nomen 和 $cognomen 数组中的 [...] 代替了数百个罗马名称,以节省空间和时间。
最佳答案
array_rand
似乎存在随机性问题,请参阅 here .
我更喜欢使用mt_rand我自己。
以下函数可以创建由 1、2 或三个部分组成的随机名称。
function randomName(){
$numargs = func_num_args();
$first = func_get_arg(0);
$one = count($first)-1;
$name = $first[mt_rand( 0,$one)]; //count($array)-1
if($numargs > 1){
$middle = func_get_arg(1);
$two = count($middle)-1;
$name .=" ". $middle[mt_rand( 0,$two)];
}
if($numargs > 2){
$last = func_get_arg(2);
$three = count($last)-1;
$name .= " ".$last[mt_rand( 0,$three)];
}
return $name;
}
使用
$var= randomName($first,$middle,$last);// 3 names
$var= randomName($first,$last);// 2 names
etc
其中 $first,$middle,$last 是数组
关于php - 使用随机方式制作虚构的 "people",获得大量克隆(PHP、Mysql),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22490325/
我是一名优秀的程序员,十分优秀!