需要一个公式来计算滚动

时间:2016-02-13 15:24:23

标签: javascript php hash formula

这是一个获取卷号的脚本(在CSGODOUBLE中使用):

$server_seed = "39b7d32fcb743c244c569a56d6de4dc27577d6277d6cf155bdcba6d05befcb34";
$lotto = "0422262831";
$round_id = "1";
$hash = hash("sha256",$server_seed."-".$lotto."-".$round_id);
$roll = hexdec(substr($hash,0,8)) % 15;
echo "Round $round_id = $roll";

这会滚动一个从0到14的数字。每次都是相同的,直到哈希值发生变化。

我需要从 0到4 滚动 5 数字,但它们不能重复。我需要使用相同的哈希系统来实现。

示例

$hash = "FIRST";
Outcomes:0,3,1,2,4;

$hash = "SECOND";
Outcomes:1,4,2,3,0;

$hash = "THIRD";
Outcomes:2,0,1,3,4

// etc.

此外,在JavaScript中获取公式是完美的,但PHP也适用。

2 个答案:

答案 0 :(得分:0)

尝试使用Array.prototype.slice()复制原始数组,Array.prototype.splice()以从复制的数组中检索项目,Math.floor()Math.random()while循环< / p>

var arr = [0,1,2,3,4];
var res = [];
var copy = arr.slice(0);
while (copy.length) {
  res.push(copy.splice(Math.floor(Math.random() * copy.length), 1)[0]);
}
document.write(res)

答案 1 :(得分:0)

var arr = [0,1,2,3,4];
var res = [];
var copy = arr.slice(0);
while (copy.length) {
  res.push(copy.splice(Math.floor(Math.random() * copy.length), 1)[0]);
}
document.write(res)