KeyFansClub
陆陆侠 - 2022/4/30 15:38:00
- let id = ["sxq", "紫鱼", "陆陆", "乱码", "卡布奇诺", "sssora", "妮可", "citrus", "红叶(千里朱音)", "tedu666", "芋頭西米露umi", "nemoma"]let rand = seed => { seed = (seed * 9301 + 49297) % 233280 return seed / (233280.0)};let vote = seed => { if (isNaN(seed)) { seed = seed.split('').map(x => x.charCodeAt()).reduce((a, b) => a + String(b), 0) } const random = Math.floor(rand(seed) * 100000) % id.length console.log(id[random])}vote('看看今天该投谁')
复制代码既然tedu那么无聊,那么我也学tedu整个随机选人(
我设计的版本可以通过随机种子来选人,种子不变,最后选出来的结果也不会变(应该是这样
自我测试了一下,应该没啥问题了,也欢迎大佬们给出更好的算法
用法也和tedu的一样,复制完扔到F12的控制台就可以了
通过修改最后一行的“看看今天该投谁”就可以改变种子
那么根据我随机出来的结果,我就先摁一票“sssora”了(
vote:sssora
陆陆侠 - 2022/4/30 15:41:00
- let id = ["sxq", "紫鱼", "陆陆", "乱码", "卡布奇诺", "sssora", "妮可", "citrus", "红叶(千里朱音)", "tedu666", "芋頭西米露umi", "nemoma"];
- let rand = seed => {
- seed = (seed * 9301 + 49297) % 233280;
- return seed / (233280.0);
- };
- let vote = seed => {
- if (isNaN(seed)) {
- seed = seed.split('').map(x => x.charCodeAt()).reduce((a, b) => a + String(b), 0);
- }
- const random = Math.floor(rand(seed) * 100000) % id.length;
- console.log(id[random]);
- };
- vote('看看今天该投谁');
复制代码emm,格式有点问题,重发一下(
:miffy2:
陆陆侠 - 2022/4/30 15:42:00
let id = ["sxq", "紫鱼", "陆陆", "乱码", "卡布奇诺", "sssora", "妮可", "citrus", "红叶(千里朱音)", "tedu666", "芋頭西米露umi", "nemoma"];
let rand = seed => {
seed = (seed * 9301 + 49297) % 233280;
return seed / (233280.0);
};
let vote = seed => {
if (isNaN(seed)) {
seed = seed.split('').map(x => x.charCodeAt()).reduce((a, b) => a + String(b), 0);
}
const random = Math.floor(rand(seed) * 100000) % id.length;
console.log(id[random]);
};
vote('看看今天该投谁');
discuz的编辑器太难用了,我还是直接这样发吧
tedu666 - 2022/4/30 15:43:00
但是,你这个代码压缩成一行后就跑不动了((
写代码一定不要偷懒不写分号((
不然压缩的时候会出问题(
tedu666 - 2022/4/30 15:45:00
代码部分加个code应该就行了吧,还好吧不太难用((
tedu666 - 2022/4/30 15:49:00
az,刚刚代码有问题(((((
- //随机:
let num=1,id=["sxq","紫鱼","陆陆","乱码","卡布奇诺","sssora","妮可","citrus","恶搞马甲9","红叶(千里朱音)","tedu666","芋頭西米露umi","nemoma"];
for(i=0;i<10000;i++){
num += Math.floor(Math.random()*114514);
num *= Math.floor(Math.random()*1e7)+1;
num |= Math.floor(Math.random()*1e8)+1;
num &= Math.floor(Math.random()*1e9)+1;
}
num=num%id.length;
console.log(id[num]);
复制代码这个应该没问题了()
狼人杀变得奇怪起来了哈哈哈哈哈哈哈哈哈哈
紫雨鱼 - 2022/4/30 16:12:00
姆啾?妮可桑的直觉好可怕......第一天就连戳三人,不知是对自己敏锐的直觉自信,还是想搅起浑水呢 ╮(╯▽╰)╭
芋頭西米露umi - 2022/4/30 16:27:00
來遲了XD 現在是什麼情況? . w .
矢泽妮可 - 2022/4/30 16:33:00
矢泽妮可 - 2022/4/30 16:36:00
[code]let id = ["sxq", "紫鱼", "陆陆", "乱码", "卡布奇诺", "sssora", "妮可", "citrus", "红叶(千里朱音)", "tedu666", &q 陆陆侠 发表于 2022/4/30 15:38:00[img]https://keyfc.net:443/bbs/images/common/back.gif[/img] |
妮可不懂代码只懂唱歌
就是可以利用贴出来的代码正确化票SSSora吗
因为这个只随机数要这个值不变,出现的结果一样..
所以只要经过多次尝试,就可以随机到自己想要的效果了
SSSora - 2022/4/30 16:39:00
随机票人的动机和目的是什么
以前的排水还有道理可寻
所以现在24K卡布奇诺的身份要打上一个大大的问号 倘诺你是民 仅凭这点证据就能让你起票我的杀心 为什么我正常对恶搞马甲被票原因的质询能让你产生票我的动机呢
SSSora - 2022/4/30 16:40:00
SSSora - 2022/4/30 16:43:00
SSSora - 2022/4/30 16:47:00
再等等 不急 等晚上看看再票 咱们的票不能浪费
tedu666 - 2022/4/30 16:51:00
有道理,所以没证据的时候自投比较好((
#Unvote: 乱码
#Vote: tedu666
芋頭西米露umi - 2022/4/30 16:52:00
那,我跟你好了XD
#Vote: 芋頭西米露umi
tedu666 - 2022/4/30 16:54:00
我自己瞎改了一下你代码((
现在可以传字符串、function、对象等类型了(传进去的值应该是没问题的)
[code]
let id = ["sxq", "紫鱼", "陆陆", "乱码", "卡布奇诺", "sssora", "妮可", "citrus", "红叶(千里朱音)", "tedu666", "芋頭西米露umi", "nemoma"];
let vote = seed => {
l=id.length,r=(10**(l.toString().length)),rand=function(seed){return (l*r*seed*9301+49297)%(r+233280)/(r+233280)};
seed=JSON.stringify(seed)+(seed||'normal').toString();
seed=seed.split('').map(x => x.charCodeAt()).reduce((a,b) => a+b, 0);
const random = Math.floor(rand(seed)*r)% l;
console.log(id[random]);
};
vote('现在种子可以是对象或函数类型了');
[/code]
避免惹到各位这个种子就指向我了((((((
明天就晚上了呢~不知道明天会发生啥
来自宇宙的乱码兄 - 2022/4/30 17:49:00
我 开 摆
vote:乱码
友情提示这局自投不吃牌
陆陆侠 - 2022/4/30 18:07:00
嗯…简要回答一下sssora发出的两个提问
嘛,这个当然只是因为看到tedu的随机代码,想到了以前接触过的一个叫做“线性同余随机数”的玩意,所以身为半个程序员也想跟风耍一耍,改良了一下这串随机选人的代码,也正如
妮可所说,改变种子就可以改变结果,但是至少这种算法相比用Math.random多了道可验证性,先不论为啥我投了sssora或者我是不是故意选了可以选中sssora的种子,至少可以确定的是,用我提供的种子确实可以100%选中sssora就是了(当然在第一天没啥线索的情况下,大家不就都是排水或者互投逼发言么,这么多届过来了,不是也很正常了(
这个就简单了,自然是因为挂了梯子忘关了(最后既然sssora也比较活跃,那我这票就撤了,晚点再看看情况#unvote:SSSora
24K卡布奇诺 - 2022/4/30 18:45:00
#Unvote:{SSSora}
我只是用前段时间写的代码判断的罢了
(怎么都开始用代码随机票人了…
- import pandas as pd
import numpy as np
df = pd.read_excel('玩家.xlsx')
s = df.loc[df['Delete'] != 'y', 'ID']
print(s.values)
players = s.count()
#print(s[np.random.randint(players)])
id = input('玩家ID:')
days = int(input('天数:'))
killers = int(input('杀手人数:'))
ls = [[0.637, -0.318, 0.212, -0.159],
[-0.273, 0.318, -0.141, 0.08],
[0.463, -0.664, 0.953, -0.511]]
#[-0.854, 0.328, -0.604, 0.511]
i = np.floor(ls[players % killers - 1][days-1]*players)
print(s[(s.index[s == id]+i) % players])
复制代码等等 这届杀手是三人?那我应该注释掉第17行了:miffy2:
再跑一遍 结果是:
- 9 红叶
Name: ID, dtype: object
复制代码感觉妮可有点可疑 到底选谁呢~
nemoma - 2022/4/30 19:22:00
所以这游戏套了马甲也会吸引巨大的仇恨
目前形势看不明白,而且random.org能直接发生随机数的事情其实也没必要专门写代码(汗
总之先避免吃牌压一票自投
vote nemoma
sxqsxq - 2022/4/30 19:41:00
你们这一堆程序员发言给我整迷了~~~谁能确保杀手是使用随机数杀人的呢。。。
第一天没视野,摆
#vote sxqsxq
紫雨鱼 - 2022/4/30 19:54:00
大家摆我也摆
vote 紫雨鱼
陆陆侠 - 2022/4/30 19:55:00
专门写代码当然是为了确保严谨性,毕竟一来我的代码可以复制,二来种子决定唯一的随机结果,确保了我的随机结果是可以被再次验证的,当然在这个基础上也可以玩点更多的花样,比如,我现在预告一波,如果我明天还活着的话,我会投给种子为 “当日纳斯达克开盘指数*道琼斯开盘指数*10000”(从jump的抽奖规则抄来的) 的那位人士,这样一来,我就完全无法控制我明天将投给谁,同时大家也可以对这个结果进行验证。
这也算是一种浪漫吧(
SSSora - 2022/4/30 20:17:00
自投咯哈哈
vote:sssora
tedu666 - 2022/4/30 20:18:00
不对,全摆烂自投的话就看谁第一个投的(
那我是第一个投的((
出大问题(
红叶晚潇潇 - 2022/4/30 23:39:00
第一天看不清,我也先自投好了
vote:千里朱音
tedu666 - 2022/5/1 0:01:00
祝各位劳动节快乐~
诈个尸,虽然真正放假时间不多就是了~
来自宇宙的乱码兄 - 2022/5/1 11:42:00
如 都 摆
<sssora> 会 然 毙
望 君 知
来自宇宙的乱码兄 - 2022/5/1 11:56:00
恶 剧 没 用 。
先 投 一 票
看 则 写 突 死
一 二 都 票 <sssora>