置顶公告:【置顶】关于临时开启评论区所有功能的公告(2022.10.22) | 【置顶】关于本站Widget恢复使用的公告
  • 你好~!欢迎来到萌娘百科镜像站!如需查看或编辑,请联系本站管理员注册账号。
  • 本镜像站和其他萌娘百科的镜像站无关,请注意分别。

Module:Sandbox/红石小蝈/Dice

贴贴♀百科,万娘皆可贴的百科全书!转载请标注来源页面的网页链接,并声明引自贴贴百科。内容不可商用。
跳到导航 跳到搜索
Template-info.svg 模块文档  [创建] [刷新]
local ret = {}
prime = 998244353

local function fastpow(a, b, mod)
	local n = 1
	local r = a
	local p = b 
	while p > 0 do
		if p % 2 == 1 then
			n = n * r % mod
		end
		r = r * r % mod
		p = (p-(p%2)) / 2
	end
	return n
end

local function seed(frame)
	local t = os.time()
	t = fastpow(3, t, prime)
	return t
end
rand = {}
rand.seed = seed()
rand.dice = function(num)
	rand.seed = rand.seed * 114514 % prime
	if num <= prime then
		return rand.seed%num
	else
		return fastpow(num % prime, rand.seed, num)	
	end
end

rand.run = function(str)
	local stack = {0, 0}
	stack.top = 0
	for i = 1, mw.ustring.len(str) do
		local chr = mw.ustring.sub(str, i, i)
		local ord = mw.ustring.byte(chr)
		if ord >= 48 and ord < 58 then
			stack.top = stack.top * 10 + (ord - 48)
		elseif chr == 'd' or chr == 'D' then
			
		end
	end
end

ret.seed = seed

return ret