首页 >

计算机是不是能生成真正的随机呢 – 数据库 – 前端|

普中plc怎么样,怎么删除单元格内的有效性,表格怎么设置两数比普中plc怎么样,怎么删除单元格内的有效性,表格怎么设置两数比计算机是不是能生成真正的随机呢 - 数据库 - 前端|计算机是不是能生成真正的随机呢

首先回答题主的问题:

1.抢红包真的是“靠手气”,在有限的次数内。实际抢红包经历已经告诉你了,如果次数足够多的话,每个人抢的金额在数学上是一样多的。

2.计算机不能生成真随机数,可以是伪随机数、赝随机数,微信红包采用的伪随机数,但是他是带有金额上限的,也就是每一次抢红包,他的红包剩余金额都是变化的。

3.微信红包是实时算出来的,不是预先分配好的,当然这是内存计算,不涉及数据库存储查询等耗时操作。

微信红包的实现算法细节描述

用户发红包,从财付通拿到用户的金额数据,设置红包的个数、红包的金额、类型(随机或平均),保存这条数据入库的同时同步至redis(或者先入redis再存库),扣财付通的钱;

用户开始抢红包:比如50元10个红包,平均一个5元,那么随机金额就是0.01~10元。

当已经被抢5个红包总共30元之后,还剩20元余额和5个红包个数,那么第6个人的红包随机金额就是0.01~8元之间。每一个红包都会根据剩余金额和剩余个数来重新计算金额,但是要保证最后一个红包不得小于0.01元,而且最后一个红包不需要做任何计算,剩多少给多少。

每条红包数据增加一个计数器,原子操作剩余金额和剩余个数,避免冒领。

财付通做好每秒20万入账准备,实际效果只有8万笔每秒(TPS 8w/s)。

每个红包只有24小时有效期,超过24小时,没有抢完的红包返还发起人。

不会做到真正的随机,只是伪随机,无限次数演练的情况下理论上平均,遵循截尾正态分布。

金额最大的有两个,谁先抢到“谁手气最佳”。

大家还有哪些看法,欢迎评论区讨论交流~


计算机是不是能生成真正的随机呢 - 数据库 - 前端|
  • sql通信区的用途是 - 数据库 - 前端|
  • sql通信区的用途是 - 数据库 - 前端| | sql通信区的用途是 - 数据库 - 前端| ...

    计算机是不是能生成真正的随机呢 - 数据库 - 前端|
  • CPB软件是什么 - 数据库 - 前端|
  • CPB软件是什么 - 数据库 - 前端| | CPB软件是什么 - 数据库 - 前端| ...

    计算机是不是能生成真正的随机呢 - 数据库 - 前端|
  • oracle的存储过程查询整张表返回结果 - 数据库 - 前端|
  • oracle的存储过程查询整张表返回结果 - 数据库 - 前端| | oracle的存储过程查询整张表返回结果 - 数据库 - 前端| ...