算法问题征解:怎样生成随机数而不借助任何工具?

    如果你身上没有任何可以使用的工具(手机、mp3、手表、尺子、纸和笔等等),也无法寻求别人的帮助,碰巧这时你突然急需获取一个小于10的随机自然数,你该怎么办?

    先抛砖引玉,说说我自己想到的一些办法:

  • 取当前年月日之和的个位数(理论上随机性不佳)
  • 憋住呼吸并循环慢念0到9这十个数,在吸下一口气之前看念到多少(潜意识会导致随机性不佳)
  • 拔10根头发,看第几根最长(可以边拔边比并不断更新最大值)
  • 回忆一下看有多少天没来那个了,取个位数(只适用于女性)
  • 看身上一共有多少块钱,取个位数
  • 完整地唱完一首歌,取歌词字数的个位数
  • 随意想一个英文单词,算出所有字母的ASCII码之和并模10

    你还能想到哪些有趣的算法?欢迎在下面留言讨论,我会把有意思的留言在这里更新出来。


    网友芝壹

  • 想一个人名字,取总笔划数模10的值
  • 依次摁每个手指的关节,看响了几个(哈哈,挺有意思,可惜不是随机的)
  • 如果钱不算工具的话,直接看钱的序列号就可以了(我承认我的数钱法其实是用到了辅助工具的)
  • 如果穿了有拉链的上衣,随机拉到一个地方,数一下下面的链齿

    网友Combo

  • 如果是在大街上,可以取看见的第一个车牌号的个位
  • 或是在骑车的时候,数一分钟经过了多少根电线杆,取个位

    网友无聊的人

  • 随便涂鸦,求总的交点数或区域数(我喜欢这个创意,虽然要借用纸和笔)

    网友Platinum

  • 手指头的指纹到关节处是完全消失了的,可以任意掐住一点,看到关节处有多少条纹

    网友可耻的匿了

  • 对于头发长的女同胞们,可以先抓住一把头发,再数里面有几根
  • 对于头发短的男同胞们,别忘了还有其它地方的毛也是可以用到的

    网友maxint64

  • 买一包字母饼干,算ASCII码之和(-_-b)

    网友lmhjf

  • 没有手表可以用70次脉搏来计时,有了计时工具就可以想出很多办法了
  • 比如在大街上,数70次脉搏的时间里有多少辆车经过(两头都得数可不容易)

    网友wen

  • 看看上面几楼发的帖子最搞笑,取个位(呵呵)

    网友aaa

  • 上街摸一个美女屁股,看他骂你用了几个字(汗-_-b)

73 条评论

  • guanguan

    给自己一拳,数数有多少颗星星

  • lazyye

    沙发!!!!

  • velicue

    把当前的秒数平方后取当中的一位数。

  • 芝壹

    哈~这个我经常用,不过我是需要2选1时随机弄出个单双数(比如把手机显示的时间加起来是双数就步行单数就骑车..)
    你这个咧~ (我第一反应也是加日期)
    1.很快在脑中想出一个朋友或明星的名字,把笔画数相加取个位。顾sen就是2(竟然双关了=_=)
    2.同上,把那个名字的最后一个字各个字母在26个中的序位相加取个位。如”sen”19+5+14.
    3.很快凭直觉两手随意伸出几个手指,左手小指–大拇指分别编号1–5,右手大拇指–小指编1–5,然后相加取个位。
    4.我要先占楼~~下面待续~~^.^

  • Combo

    1.骑车的时候,一分钟经过了多少根电线杆,取个位。
    2.掷硬币,二分查找1-1000之间的数,取个位,貌似随机性稍差。
    3.数数书包里有多少本书,取个位。貌似随机性也很差。
    4.如果有带读秒的红绿灯的话,取第一眼看到的个位数。
    5.看见一辆车车牌号的个位。
    6.路边商店的电话号码的个位。

  • 芝壹

    4.不借助工具..但人总是穿衣服的吧,一般衣服都有牌子吧,如果是中文的标签就加笔画,英文的就加序位嫌麻烦就取第一个字母的序位(个位)(我好没创意=_=)
    5.数出你鞋子穿鞋带儿的那个孔有几个取个位(前提是穿了运动鞋或帆布鞋之类才行)
    6.如果前面还算借助工具的话。。那就= =背出一个记得住的电话号,所有数字相加取个位,如果嫌这个不够随机(比如你只记得自己的),你可以只取奇数位上的数字。还不够随机?你可以把得出的数字再乘以号码的第3个数取个位。
    7.用你的眼睛度数的百位数如500的5(很少人不近视吧?)加上身高163加体重51加上父母的年龄和89取个位。(诶..隐私已泄露)
    8.单脚站立再摸自己脉搏,一定要客观的尽量平衡站最长时间直到你脚落地那刹那!你数出的那个数字的个位。
    9.你知道么?有人可以摁响手指关节,但并不是任何时候每个关节都会响。你可以。。= =全摁一下,看几个响了(0-10正好)
    10.拔下一根头发,在你小指上绕,看能绕几圈(适于长发女生= =)
    11.如果可以看多少块钱,也可就抽出一张钱,把钱上的号码相加取个位~
    就这吧~想到再续~ ps.嗯..楼主大人,其实几乎没女生能准确记得多少天。。

  • 无聊的人

    最近一次看×片的日期
    最近二次看×片的间隔
    拿张钞票、发票、银行卡、信用卡、会员卡,打折卡、身份证看号码末位或者把所有号码末尾求和
    随便写一句话,算笔画和、音调和
    随便写N个数求和
    随便唱一句旋律 将唱名求和即1234567求和
    随便涂鸦,求和交点数与区域数

  • 芝壹

    12.你站在那儿上衣一般是覆盖住腰带的吧。。找到你腰带上(或下)边缘和上衣的交界处,从它到你上衣的下边缘(就是最下面)那截距离,然后拿你两个食指交替着(平行于地面)比划下去,看是你几个食指的宽度。其实相当于尺子了(囧 M神我说清了吗? 。。。汗 我不玩了 我废话好多)
    我觉得最棒的还属拔10跟头发!极品随机。(谁爱拔谁拔去..我不会..)

  • brute

    站立,把当前的前后左右分成四方向或八方向甚至更多,闭上眼睛,原地乱转圈,站定,看现在的朝向是原来定的第几个方向。

  • Platinum

    观察了一下手指头,到关节处指纹是完全消失了的,可以任意掐住一点,看到关节处有多少条纹,比拔头发的优势在于,如果要取很多次,头发总有拔光的时候(或者不说拔光,让你取 5 次随机数你就该心疼了)……

  • 可耻的匿了.

    拔头发好疼, 先抓住一把头发,再数里面有几根就好,当然,头发要足够长 (恩,某体毛也可以一样操作)

  • 匿了

    撒泡尿,同时数数,数数的速度不重要。
    一泡尿玩取数的个位数字。

  • ywpg

    直觉二选一,然后二进制。

  • HJin_me

    我的思维本来就具有随机性!马上说出一个数字就OK了…别多想,就说一个就行
    复杂一点,就想个数字A百B十C,然后打乱构成C百A十B,用辗转相除的方法求个最大公因数取个位,也行,计算量不大

  • funny

    1 想一下自己有过几个女朋友(适用于男生)
    。。。。。。。。男朋友(适用于女生)
    2 把自己亲姨,亲姑,亲叔,亲舅的数目之和(适用于父母均为非独生子女)

  • maxint64

    买一包字母饼干,算ascii码之和,mod10

  • RSS输入

    RMB算工具么,随便拿张出来看看序列号

  • MdMd~~

    M67老了……

  • 左岸读书

    时间,头发,钱,这些不是工具吗?

  • lmhjf

    我觉得ascii码、英文单词不够随机,0-9出现的概率不相等。

    抓一把黄豆,数一数个数,取个位数。
    在马路边,数一数一分钟(没手表,用70次脉搏计时)共经过多少辆车。

  • catouse

    将自己的手机号码各位数加起来模10

  • abc881858

    自古2楼多杯具~

  • 芝壹

    12L好厉害,直接简化为2选1了。我来狗尾续貂帮你完善一下..
    1.拔一跟头发(…),太长则把它断为3cm左右约程线段样子,扔到地上,从你的视角大致想象出一个坐标系,如果其斜率>0就取1,<0就取0。扔4次就可以了~ (我不太懂2进制,这样对吗?如果不对就假装我没有留言~看不见看不见我用隐身字体~)
    2.立定跳远。双脚并拢尽力往前跳会发现落地时你两脚前后位置是随机的..(起码我是)左脚前为1,右脚为0.跳4次~
    3.如果穿了有拉链的上衣,随机截取一小截,数一下那个链齿,奇数取1,偶数0,截4次~
    4.如果有纸钞上号码或硬币可以借助,就不用说了。呵呵我看最简单的是一枚硬币抛4次就搞定了~

  • totrit

    1,脱下鞋子扔出去,看鞋头朝向几点钟方向,然后余10 。
    2,数数自己小拇指上的长毛的毛孔数,余10 。
    3,开裤子撒尿,持续秒数余10 。
    4,数自己的腹肌块数,余10 。
    5,抽自己耳光,并计数,什么时候出血了,停止,余10 。

  • delectate

    走路,量距离步数

  • zqzas

    QQ在线人数的最后一位

  • 阿士

    想想今天吃了几粒米

  • magicgod

    光头,脱毛症,男性,没钱,歌盲,英盲,不识字,没指纹,不识数,没亲戚朋友。

  • wen

    看看上面几楼发的帖子最搞笑,取个位~~

  • 王小力

    楼上不要取随机数了:P
    人类取随机数不比机器简单吗?

  • 夜弓

    要求的是离散均匀分布么?

  • lyh

    自认为随机地选两个小于10的自然数a1 a2

    计算(a1*3+a2*7)mod 10,

  • 严酷的魔王

    在球场旁边看场内的人投中二十个球需要多少次然后取模

  • rex

    憋一口气,同时数自己的心跳。到撑不住时,取心跳数的个位数。

  • aaa

    上街摸一个美女屁股,看他骂你用了几个字

  • Voldemort

    要是我的话,随便说一个10以上的数,再想想PI的小数点后那一位是多少。反正我没直接背出第几位的本事,所以对我来说是基本随机。

    M牛不是PI背到了25位吗?

    其实大部分方法本质有两种:要么先得“随便”想一个东西,然后用一个固定的公式打乱,以减少感情因素;要么借助当时的偶然周围环境(时间、地点、周围事物)。

  • Voldemort

    这里有一个问题,我心里随便想一个数,如果对我不是随机的,那对别人应该是随机的了吧。

    虽然我想的什么数字是由我的偏好决定的,但我的偏好是什么样的不也是随机的吗?

    从不确定论来说,我加不加情感因素说出来的数字都应该是随机的啊。

  • lxx

    看路边贴的小广告,取号码的第8位

  • wuzhengkai

    扔鞋。。。。。

  • cartman

    javascript:Math.random()
    当年就是靠这个决定谁去拿外卖

  • flyink

    扔一个手雷看能一次性扔死多少人

  • 鬼马星

    呵呵……
    借助工具的算法多了……

    不借助工具么……
    1、做俯卧撑 mod 10
    2、心里随便想1个数字n,虽然潜意识可能影响n的值…但是再取自己QQ号或者手机号上第n位就可以了。
    3、上次考试挂科的成绩个位数。从不挂科的牛人…那就取最低分的个位。
    (每次都全满分的牛…不再此列)
    4、手机或者QQ号每一位数字加起来的和mod 10

    暂时想到这么多。

  • splendor

    有些糊涂了:什么才是随机数?仅一个数能说是随机的吗?

  • h2feo4

    我觉得应该找一个非线性很强的系统来产生随机数
    例如在手掌上立一根竹竿(倒立摆)
    观察竹竿倾斜的方向,向前计为0,向右计为1,向后计为2,向左计为3
    这样就生成了一个随机性很大的四进制码流
    如果觉得随机性不够就再hash一下
    如果不能用竹竿,就单手倒立,观察身体晃动的方向(不要说地面也不能用)

  • zz

    在地上十等分一个圆,
    乱序随机地在各部分标注出0-9的数字
    站在圆心,闭眼,努力不受光线干扰,剩下的就是转圈了
    转到哪算哪

  • 吴潇岛

    不眨眼,数数,看数能到几。

  • yuhc

    看看现在泡的MM是第几个,
    再看看现在泡的MM自己是第几个泡的人,
    加起来模10就好了
    没有MM怎么办。。还是去摸屁股吧

  • NooN

    2个人,各自想一个随机数。都说出来,相乘,取结果的个位数。

  • NooN

    2个人,各自说出一个数字,大一些更好,相乘,然后取尾数。

  • struldburg

    身体呈弯曲姿势,数衣服上的皱褶mod 10…

  • morrowind

    应该限定人要像Hawking那样全身都不能动,唯一能思考的就是大脑这样。
    所以最简单的办法还是快速想象一个句子数单词ascii码取模。

  • 轩辕十四

    找个电影,数数里面“的”字有几个。。。

  • gnaggnoyil

    真正的随机数只存在于量子中……想生成真正随机数的人一定是疯了……

  • icesheep

    如果只需要1个随机数,那真的随便想一个就是了.

  • devymex

    楼主还有楼上的很多办法都是不适合重复试验,或着重复试验就不随机了。

    我提供一个,拿出手机,打开秒表,按一下启动,再按一下停止,取微秒的个位数,一定随机。

  • PrinceFrost

    计算你从出生到现在的小时数,mod 10……

  • kootain

    想一个 7位数 一个 3位数..
    取余…

    如果 你能 在 潜意识 中 做到不随机..
    那我 就 Orz 了…

  • adora

    。。。。。。。。
    。。。。。。。。
    。。。。。。。。
    对拔头发和那什么那个极其无语= =||||

  • xxwzy

    楼层数的个位数……

  • Pt-Cr

    买一包字母饼干,算ascii码之和,mod10
    这个感觉很有意思
    计算你从出生到现在的小时数,mod 10……
    如果用了一个小时算完了,是否再加1?

  • 沙渺

    表示联想到了/dev/random

  • JerrySimon

    投几次硬币,正是1,反是0,按顺序写成二进制数,然后转十进制,最后把各位数字相加,不是个位数就继续,加到只剩一位为止。。。

  • johnniac

    如果只要1个随机数, 只试验一次。 那就随便说一就行了。 别人永远没有办法搞明白你的数是不是随机的 因为只实验一次。

  • cervelo

    好厉害,直接简化为2选1了。

  • blockphantom

    明明说是不能用工具的情况下,很多人偏偏要用工具。对于利用几乎是常数的seed来产生随机数的我就不吐槽了……其实我想说的是不用工具只用大脑我觉得不可能想出随机数,人的意识是有偏向的,比如让你说出五个0或1的随机数,真随机数有可能产生五个1或五个0,但人产生五个0或1的可能性一定比别的小,因为人对随机数的理解的影响。同样的,随便想一个字母或者别的东西,也没有意义。
    所以要想产生随机数还是需要靠道具。其中最佳当然是硬币,楼上的女生抓头发也不错,跟自己体能有关的就不行,用手机号也不好,seed变化有限。
    从实际考虑,利用道具最好是随时都在身上的,除了手机,有手机在这个问题根本没意义……我觉得根据机械产生随机数,把时间作为seed很不错,但是不一定每人都戴表,又没手机……好吧想半天没想出来

  • 本人名称请参考本人名称

    弄一个递归,看你一分钟内做了多少次(取个位)。

  • codefer

    这个占卜类书集比较有经验。

  • findegil

    任意选择某歌曲中的两段旋律(前后端点一定要随机!),转为简谱,只留下数字,写成七进制,相加。

发表评论

  ×  2  =  14