怎样的中奖算法能让人信服

话说写一个抽奖程序还不容易,不就是生成一个随机数吗,哪需什么算法之类的。

从技术上说,这确实不难。事实上,你怎么写都可以,因为程序只运行在特定的设备上,外人根本无法了解其中的细节。

那么问题就来了,如何才能让大家相信你没有作弊?

你会说,我可以把程序开源,抽奖前大家监督运行。不过这样就一定可信了吗?

就算程序没问题,也不代表系统就是可靠的。或许你早已偷偷开了外挂,这样无论程序有多公正,结果仍躲不出魔掌。

那就退一步吧,每次开奖前重装一次系统。

不过,假设所有的软件都可信,但最终仍需通过硬件来执行。如果硬件底层就有猫腻,那就根本不可能发觉了。

就算硬件也没问题,最终结果还得展示给大家吧。如果显示器就是一个加了特技的道具,那么一切都白搭了。。。


没法玩了。抽奖本来就建立在信任的基础上,存心弄虚作假,那谁还玩的赢。

难道就没有一个能让大家信服的技术手段,来解决这个问题吗?

其实,大家质疑的并非是算法,而是运行环境。毕竟,虚拟世界里玄机太多了。

所以,我们必须放弃自己产生随机数的做法,而是从更客观的第三方获取。

宇宙

大自然变幻无常,充满各种随机性。

微观的世界更是扑朔迷离,要是使用量子的状态,来计算中奖号码,客观程度堪比宇宙真理了。

听起来似乎很理想,但如何才能获得这些数据?只能通过科学仪器来测量。

然而再精准的仪器,也得由人来控制。可惜我们不懂,只能让科学家们去操作。

这不,又涉及到人这个环节了。只要有好处,砖家想怎么说都可以,反正一般人也无从考证。

就如同观看宇宙节目,说星星有 10 亿颗还是 20 亿,有谁会在意?甚至再多报几个数量级,也少有人质疑。

这个领域的信息,对常人来说太遥远了。即使再客观,也难以让人信服。

因此,光有客观随机是远远不够的。要让大家能切身感受到的,才有说服力。

天气

这次,我们选择一个贴近生活的因素:天气。

虽然气候变化很有规律,但短时间里的气温,还是具有一定的不可预测性。那么就来尝试下,使用气温来作为中奖号码吧。

我们选择开奖当天,各大城市的最高气温,例如:

北京 12°C,上海 17°C,广州 24°C,深圳 25°C

于是组合出一串数字:12172425,作为开奖的结果。

当然你会说,这种组合也太少了吧。况且短时间内,气温也不会有很大的变化。如果事先将每个城市 ± n°C 的组合都买下,岂不是很容易中奖?

别急,这里只是个举个例子。事实上,我们得选择更多的城市,让组合呈指数增加。

如果换成 10 个城市,即使每个押上 ± 1°C,也有 3^10 = 59,049 种情况了。

如果有 20 个,就有 3^20 ≈ 35 亿的组合数!

不过问题又来了,中奖号码就那么几位,如何才能将这一大堆温度,转换成最终的号码?

显然,这时不能简单的依次排列了。我们必须做一定的舍取,让每个数据都能参与计算。例如将它们相乘:

12*17*24*...*30 = xxxxx

得到一个结果。不过这种计算方式也太弱了,要是一个城市温度升高,另一个降低,也许结果正好就抵消了。

所以,为了防止被预测,我们得让任何一个数据的细微变化,都能使得结果变得完全不同。

于是,经典的散列算法用在这里再好不过了吧。

我们照着天气预报的顺序,依次算出每个城市的气温散列值:

城市气温 散列 (MD5)
北京12 6fe97759aa27a0c9 
哈尔滨5 bbce2345d7772b06 
长春7 ceea167a5a36dedd 
沈阳6 5a880faf6fb5e608 
...... ...
澳门26 3463d06de0ca9a15 

最后,再整体来一次散列计算,并将结果转成最终的开奖号码。

Hash(List) % N = xxxxxxx

不像宇宙那么神秘,天气可随时查询,而且人们能实时感受着。

算法和数据都已公开,未来任何时刻都可以进行检验,显然具有足够的权威性!


不过尽管如此,现实中我们还是不会太在意精确度。有谁会为了 1°C 而亲自测量,况且,同个城市不同的时间和环境,仍有一些偏差。

如果彩票开奖用上天气数据的话,CCTV 最后一个可信节目也将面临消失吧:)

金融

思考下本质问题,抽奖目的是什么?不就是为了钱吗。

同样是钱,世界级的金融机构,显然有着更完善的体系,为何不采用它们的数据呢?

例如股票,有着方便快捷的查询途径。电脑、手机、报纸随时可查阅,信息渠道上的垄断几乎不存在。

当然,股票本身并不随机,其变化源于交易,因此可以人为操纵。

然而只要玩家足够多,世界各地的人们都在实时操作,于是就成了一个巨大的分式系统,整体就显得客观稳定了。

这时要想对整体进行操纵,就得有大量的经济基础为前提了。

以苹果为例,如今市值高达 7000 多亿美元,即使想撬动一个零头,也得花费千万级的成本。相比那点彩票奖金,简直小巫见大巫。

况且,世界上又不只有苹果一家。我们可以选择更多靠谱的股票,让最终组合变幻莫测。即使能够操纵一家,那也无法搞定所有的吧。

我们选定一个时间点,例如开奖当天的收盘价。同样的方式,将数据套入之前的天气算法里:

股票收盘价 散列
苹果128.701ec5f9553dc8cd90
微软48.248b731bc472c64a70
埃克森美孚89.1137f8d9a44f8fb8cd
沃尔玛78.8211c966c5b6f63f93
..........

最终得出一个类似的数值,作为中奖号码。

这样的算法是否足够随机,有待验证和改进。但其权威性是毋庸置疑的,这是基于全世界经济秩序的结果,能操纵这个级别的人,还会在乎那点彩票奖金吗?

天地人和

最后,要是觉得纯粹的股票数据还不够合理,那就不妨把天气因数也参与进来。

我们用天气对股票进行加盐,再进行散列计算:

股票收盘价 气温 散列
苹果 128.70 12  75bcf3f75e292857 
微软 48.24 5  20fc6e9ef76b5aa7 
埃克森美孚 89.11  7  fabd0b330ca0eb45 
沃尔玛  78.82 6  c7d7d2e18f5698aa 
..........  ...
result = Hash(List) % N

这样,只有同时掌控天时地利人和,才能预测到开奖结果。也许只有上帝才有这个能力吧。

转载于:https://www.cnblogs.com/index-html/p/trusted-lottery-algorithm.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/431835.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

b站电脑客户端_如何将B站的flv格式的视频转换成mp4格式

经常看到B站有精彩的视频片段,于是想把这些视频下载保存到电脑,但是发现没有下载按钮,是不是很悲催。有些时候想从优酷、土豆网这些视频网站下载视频,结果却提示要先下载视频客户端才能继续下载视频,运气差的话&#x…

linux Packet socket (1)简单介绍

本文主要来自于linux自带的man packet手冊: http://man7.org/linux/man-pages/man7/packet.7.html 平时常常使用的INET套接字提供的是7层的抓包能力,抓上来的data直接就是tcp或者udp的payload,无需关心L3和L4的头部信息。 Packet套接字提供的…

asp.net 设置 excel alignment_教你如何用Python轻轻松松操作Excel、Word、CSV,一文就够了,赶紧码住!!!...

作者:奈何缘浅wyjhttps://juejin.im/post/6868073137263607821Python 操作 Excel常用工具数据处理是 Python 的一大应用场景,而 Excel 又是当前最流行的数据处理软件。因此用 Python 进行数据处理时,很容易会和 Excel 打起交道。得益于前人的…

java 页面输出一个页面_java学习之:一个完整页面输出信息的过程(以输出Doctor表中信息为例)...

最近在练习java程序,总结一下从数据库查询信息并输出到jsp页面的过程。主要数据处理在src.cn.javatest包下面项目预览1,配置项目根目录src目录下的druid.properties数据库信息(相当于一个数据库配置文件)里面的信息可以在下载druid中获得,只需…

[xsd学习]xsd介绍

一直以来项目中对xml格式的判断使用的都是dtd格式,直到最近才发现,不知何时都已经转为xsd来进行判断和校验,于是今天专门找资料看下,不得不说,对于这类资料的入门,w3cschool真是个不错的资料库,…

教学目标四个维度_【深度好文】体育教案中的教学目标与学习目标应如何表述...

体育教师大本营教学/训练/职业/成长强 烈 建 议 大 家 星 标 我 们教 学 路 上 ☆ 不 离 不 弃在以往看到的体育课的教案上,目标部分不是用教学目标就是用学习目标来表述,然而,这两种目标表达形式有没有本质区别?分别该如何表述…

java中检查性异常类_Java异常处理、java语言推崇使用检查类型异常

异常处理是java语言的重要特性之一,《Three Rules for effective Exception Handling》一文中是这么解释的:它主要帮助我们在debug的过程中解决下面的三个问题。什么出错了哪里出错了为什么出错java语言可以说是提供了过于完善的异常处理机制&#xff0c…

why I need a flow learn note.

1.其实学网站学安卓也写了txt的学习笔记。然后扔着,(没有时间线和互动性),然后就没有然后了。 2.知识体系,一个月后,哎呦我擦,我会啥来着(搞了这么久,深有体会&#xff0…

nodejs readfilesync 路径_Linux 磁盘多路径聚合multipath

在日常工作中我们经常遇到配置存储的多路径聚合。多路径的目的是,当主机HBA卡、线缆、交换机或者存储设备的控制器故障等原因造成一条物理路径失效时,服务器可以将通过此物理路径的I/O转移到其他正常的物理路径上面,应用程序不会觉察到这种改变,从而提高…

php考勤分析,php考勤系统

【实例简介】自己写的php学生考勤系统,包括开题报告,结题报告,mysql数据库【实例截图】【核心代码】PHPkaoqinsystem└── PHP考勤系统├── database│ └── kaoqin.sql├── kaoqin│ ├── addrd.php│ ├── addstd.php│ …

遥 控 器

acm.zznu.edu.cn/problem.php?id1617 遥 控 器 时间限制: 1 Sec 内存限制: 128 MB提交: 25 解决: 9[提交][状态]题目描述 Dr.Kong 有一台高级电视机,这台电视机可以接受100个频道(从0到99编号)。电视的配套遥控器有13个按钮: 1…

php7与golang,golang 调用 php7

执行php文件func Test_exec(t *testing.T) {engine.Initialize()ctx : &engine.Context{Output: os.Stdout,}err : engine.RequestStartup(ctx)if err ! nil {fmt.Println(err)}defer engine.RequestShutdown(ctx)err ctx.Exec("/tmp/index.php")if err ! nil {…

u 20ubuntu 安装 postfix_极力推荐和田咨询问题U型钢托盘厂家

12极力推荐和田咨询问题U型钢托盘厂家泊头市毅伽属制品有限公司坐落于河北省泊头市龙华街北4公里,濒临京沪、石黄高速公路以及104、307国道,另有廊泊路贯穿南北交通十分便利。本公司设计生产各种冷弯型钢,产品包括C型钢、Z型钢、U型钢、M型钢…

HTML5中lineCap端点样式遇到closePath()

定义和用法 lineCap 属性设置或返回线条末端线帽的样式。 注释:"round" 和 "square" 会使线条略微变长。 默认值:buttJavaScript 语法:context.lineCap"butt|round|square";属性值 值描述butt默认。向线条的每…

php鼠标悬停显示图片,鼠标滑过出现预览的大图提示效果

当鼠标滑过图片时,图片会出现预览的大图,大图下面还会有介绍文字。.aa{width:88px;height :100px;}$(function () {var x 10;var y 20;$("a.tooltip").mouseover(function (e) {this.myTitle this.title;this.title "";var imgT…

405 not allowed什么意思_二驴质问散打:为什么不救天道!面临一个亿赔款?次惑小仙女宣布与可乐分手!...

次惑小仙女发作品表示:对不起让你们失望了,慢慢也学着长大了,懂得了很多,以前每天就知道天真傻笑的玩,后来懂得了努力和加油,但是很多东西并不是大家看到的那样背后的事情谁又能知道。都认为他对我很好,只有自己知道,呵呵。有些时…

阿里面试

阿里面试 转载于:https://www.cnblogs.com/chen310/p/4492243.html

matlab提示output,强制Matlab输出到命令行(Force Matlab output to command line)

强制Matlab输出到命令行(Force Matlab output to command line)我正在从Windows命令提示符运行MATLAB脚本:"C:\Program Files\MATLAB\R2014B\bin\matlab" -nodisplay -nosplash -nodesktop -wait -r "test.m"test.m很简单:function …

hdu.1254.推箱子(bfs + 优先队列)

推箱子 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 6021 Accepted Submission(s): 1718 Problem Description推箱子是一个很经典的游戏.今天我们来玩一个简单版本.在一个M*N的房间里有一个箱子和一个搬运…

ae合成设置快捷键_怎么在ae中剪切视频?怎么在ae里裁剪视频?

ae剪切裁剪视频教程:零基础学AE软件影视后期必修课程-AE新建合成-羽兔网​www.yutu.cn1、启动After Effects并导入视频第一个任务是打开一个新项目,并将视频加载到其中。首先从主菜单中选择新的构图。然后打开构图菜单,选择所需的分辨率等&am…