我会以任何语言回答......即使是伪代码......即使只是 一个想法或概念如何做到这一点。 (我用VB.NET工作喽。)将W降低到X和Y之间
我给你3个值:
- W = 20141231
- X = 100
- Y = 200
- Z = ?
您必须在数学上减少W ...,以便它将落入X和Y(包含)之间的 范围内。如果您在运行代码一遍又一遍。W总是会减少到 相同的值Z.我会打电话给你的结果Z.
如果我给你一个新的价值,明天用W ...它也会被减少,但是对于Z的不同值(对于Z我根据当前日期做了W,只是为了保持简单的东西 ,并且为Z每天生成不同的值)。
没有什么可以随机的。
没有人能够通过查看W. (当然没有窃取代码的副本)来预测Z将会是什么。他们甚至不会猜测Z会发生经常比100-110多190-200。相反,Z将 大致均匀分布在100-200之间。
你会用什么算法?你不能只是降低W至Y.(这将是 预测的。)
你不能只挑喜欢147的随机数(这里没有允许随机数。)
我尝试喜欢的东西反复取W并将它除以2 ...,直到它在X和Y之间。 (但是我得到的180-200的Z值远远超过100-120的值....并非“大致均匀分布” )
没有关于“真随机数”或“伪随机”数字的大讨论。或“均匀分布”或“近似均匀分布”的确切定义 。一个偶然的用户会在1000个Z例子处看到 ,只是觉得它“足够接近”而被认为是“大致均匀分布”。
Z = 150/W –
预计您至少会提供一个答案。这个问题甚至不提供算法,更不用说任何代码。 – RobG