gpt4 book ai didi

javascript - 将 W 减小到 X 和 Y 之间

转载 作者:行者123 更新时间:2023-11-28 08:22:33 26 4
gpt4 key购买 nike

我会接受任何语言的答案...甚至是伪代码...甚至只是关于如何做到这一点的想法或概念。 (我自己也在使用 VB.NET。)

我会给你 3 个值:

  • W = 20141231
  • X = 100
  • Y = 200
  • Z = ?

你必须在数学上减少W...,这样它就会落入范围在 X 和 Y 之间(含)。我将把你的结果命名为 Z。

如果你一遍又一遍地运行该代码...W 总是会减少到相同的值 Z。

如果我明天给你一个新的 W 值...它也会减少,但会减少到Z 的值不同。(我根据当前日期制作了 W,只是为了保留简单,每天为 Z 生成不同的值。)

没有什么是随机的。

没有人能够仅仅通过观察 W 来预测 Z 会是什么。(当然,无需窃取代码副本。)他们甚至无法猜测 Z 恰好为 190-200 的情况比 100-110 的情况要多。相反,Z 将始终大约均匀分布在 100-200 之间。

你会使用什么算法?你不能只是将 W 减少到 Y。(那就是可以预见。)

您不能只选择像 147 这样的随机数。(此处不允许使用随机数。)

我尝试过反复取 W 并将其除以 2...直到它位于 X 和 Y 之间。(但是我得到的 Z 值是 180-200 个,远多于 100-120 个值......而不是“大约均匀”根据需要分发”。)

没有关于“真随机数”或“伪随机”数的大讨论。或者确切的定义“均匀分布”或“近似均匀分布”。普通用户会看在 1000 个 Z 示例中,感觉它“足够接近”,可以被视为“近似均匀分布”。

最佳答案

这听起来类似于哈希算法。散列(和伪随机数生成器)背后的原理通常涉及取 modulus一个数字以获得均匀分布在某个范围内的结果。

例如,您可以简单地采用 W % 101 + 100 来获取 100 到 200 之间的数字。但是,这将使 Z 非常可预测,因为 W+1 将映射到 Z+1。为了使映射不那么明显,您可以首先乘以任意因子,例如 37。这会产生如下结果:

W = 20141231
W * 37 = 745225547
W * 37 % 101 = 77
W * 37 % 101 + 100 = 177

使用像 37 这样的小因子的一个问题是 W + 1 映射到 Z + 37。如果试图猜测链接的人只是比较 W 的一堆连续值,则模式可能很明显。因此,您可能会使用混杂技术,可能将 W 中的数字总和(称为 D),然后将乘法因子设置为 (D + 37 ):

W = 20141231
D = 2+0+1+4+1+2+3+1=14
F = 37 + D = 51
W * 51 = 1027202781
W * 51 % 101 + 100 = 157

您可以发明任何类型的任意逻辑来应用于W,使其显得更加“随机”,然后应用 101 的模来获得 100-200 范围内的数字。不同的技术会导致更均匀或更不均匀的分布,但您应该能够设计出一种满足您要求的技术。

关于javascript - 将 W 减小到 X 和 Y 之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22800786/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com