javascript - 如何将日期转换为列表中的随机索引?
问题描述
我需要从列表中生成随机项目的东西,但该项目每天都是随机的,并且对所有用户都是一致的。这是在一个网站上,因此使用 JavaScript(虽然我真的只需要你遵循的算法,不一定是代码本身)。
我在变量中存储了日、月和年,但我能做些什么来将其转换为 0 和列表长度之间的整数?
谢谢!
解决方案
简单算法:
将 3 个整数与 1配对:
seed = pair(day, pair(month, year))
使用此 int 播种随机数生成器,以获得所需的随机性
seed -> [0, 1, 2, ..., array.length - 1]
index = Math.round(randomOf(seed) * (array.length - 1));
element = array[index]
这是上述配对功能的基本 javascript 实现:
function pair(x, y) { return ((x + y) * (x + y + 1)) / 2 + y; }
实现 randomOf (检查上面的“随机数生成器”链接):
randomOf(seed){
Math.seedrandom(seed);
return Math.random();
}
推荐阅读
- c - 从c中的数据文件中读取
- javascript - Discord.JS:一个变量的多个参数
- android - 在 FirestoreRecyclerAdapter 上使用接口实现 onLongClick
- android - 与谷歌地图上的兴趣点互动
- python - 不知道如何在 windows 中的多个文件上运行
- android - 使用回收站视图更新实时数据库中的特定项目
- google-sheets - 如何在单独的列中在谷歌表中为日、月和年制作下拉菜单
- javascript - 如何在ajax中提交多个值?
- viro-react - 我的 ViroReact 安装过程卡在“加载依赖关系图,完成”
- python - 如何使用标签列表索引 DateTimeIndex