游戏事件
每笔投注都会把种子变成一个或多个 0 到 1 之间的数字(浮点数)。以下是每款 Original 把这些浮点数变成结果的方式。
骰子点数 = floor(float × 10,001) / 100,即 0.00 到 100.00 之间的数字。显示代码隐藏代码
const roll = Math.floor(float * 10001) / 100;// 浮点数 0.43050002 -> 点数 43.05林波结果 = 0.99 ÷ float,截取到 2 位小数,最低 1.00×。显示代码隐藏代码
const point = (1e8 / (float * 1e8)) * 0.99;const result = Math.max(Math.floor(point * 100), 100) / 100;// 浮点数 0.43050002 -> 2.29×扫雷每颗地雷一个浮点数。每个浮点数从剩余格子中取走一格(Fisher–Yates)。取走的格子就是地雷。显示代码隐藏代码
const tiles = [0, 1, 2, …, 24]; // 0 = 左上角,取走的格子离开列表const mines = floats.slice(0, count).map((f) => tiles.splice(Math.floor(f * tiles.length), 1)[0]);弹珠每行一个浮点数:小于 0.5 向左,否则向右。槽位等于向右的次数。显示代码隐藏代码
const path = floats.slice(0, rows).map((f) => Math.floor(f * 2)); // 0 = 左,1 = 右const slot = path.reduce((a, b) => a + b, 0);基诺前 10 个浮点数从 40 个方格中抽出 10 个。每个浮点数从剩余方格中取走一个(Fisher–Yates)。显示代码隐藏代码
const squares = [1, 2, 3, …, 40];const drawn = floats.slice(0, 10).map((f) => squares.splice(Math.floor(f * squares.length), 1)[0]);抛硬币每次抛掷一个浮点数:小于或等于 0.5 为反面,大于 0.5 为正面。显示代码隐藏代码
const sides = floats.slice(0, 20).map((f) => (f <= 0.5 ? "tails" : "heads"));龙塔每个蛋一个浮点数。每一行中,每个浮点数从剩余格子中取走一格。难度决定每行的蛋数和格子数。显示代码隐藏代码
// eggs、size:每行的数量,由难度决定const row = (r) => { const tiles = [...Array(size).keys()]; return floats.slice(r * eggs, r * eggs + eggs).map((f) => tiles.splice(Math.floor(f * tiles.length), 1)[0]);};21点 · 百家乐 · Hi-Lo纸牌 = floor(float × 52),来自无限副牌。每张牌一个浮点数,按发牌顺序。显示代码隐藏代码
const RANKS = ["2", "3", …, "K", "A"], SUITS = ["♦", "♥", "♠", "♣"];const index = Math.floor(float * 52);const card = RANKS[Math.floor(index / 4)] + SUITS[index % 4];// 浮点数 0.43050002 -> 7♠刮刮卡第一个浮点数从奖金表中选出总奖金。之后的浮点数把它分配到中奖格子并放置数字。显示代码隐藏代码
let x = Math.floor(floats[0] * 1e8); // 权重总和为 100,000,000const total = PRIZES.find(([, weight]) => (x -= weight) < 0)[0];const split = SPLITS[total][Math.floor(floats[1] * SPLITS[total].length)];// 浮点数 2-3:中奖数字,4-15:格子顺序,16 起:各格子轮盘号码格 = floor(float × 37),即 0 到 36 之间的数字。显示代码隐藏代码
// 每次旋转一个浮点数const POCKETS = [0, 1, 2, …, 36];const pocket = POCKETS[Math.floor(float * 37)];// 浮点数 0.43050002 -> 号码 15转盘扇区 = floor(float × segments)。赔付来自对应风险的赔付表。显示代码隐藏代码
const index = Math.floor(float * segments);const multiplier = PAYOUTS[risk][segments][index];// 浮点数 0.43050002,10 个扇区 -> 扇区 4Chicken每条死亡车道一个浮点数。每个浮点数从剩余的 20 条车道中取走一条(Fisher–Yates)。难度决定死亡车道的数量。显示代码隐藏代码
const lanes = [0, 1, 2, …, 19]; // 0 = 第一条车道,取走的车道离开列表const deaths = floats.slice(0, count).map((f) => lanes.splice(Math.floor(f * lanes.length), 1)[0]);// count = 该难度的死亡车道数;道路是前 20 − count 条车道