m0_73674542 2023-05-29 09:03 采纳率: 67.7%
浏览 12

求解概率均等的随机数

随机返回0到n中非m的整数,只调用一次rand,概率均等
int f = rand()
如何让f变为[0,n)中非m的整数,要概率均等,mE[0,n)
当时面试官说用概率做,分布到n-1个数上,然后交换位置什么的,完全没听懂

  • 写回答

2条回答 默认 最新

  • 於黾 2023-05-29 09:47
    关注

    就是说,随机到m的时候,这个数不能要,要把它变成别的数
    既然要概率均等,那么如果你一开始就随机的是[0,n),那么m变成任何别的数,那个数的概率就会加倍
    所以一开始就要随机[0,n-1)的范围,遇到m就把它改成n-1,这样概率就均等了
    当然你也可以一开始随机[1,n),遇到m变0
    -=-=-=-=-=
    其实这道题答案是什么根本不重要
    重要的是遇到一个问题的时候如何思考
    如果题目只告诉你[0,n)范围随机,这题就太简单了
    而m不要,它会有什么问题,要从问题出发
    如果可以随机多次,那么随机到m就重新随机,这没有问题
    而如果只能随机一次,随机到m的时候你总不能丢弃吧,要把它变成另一个数返回
    思考到这里答案基本已经很显而易见了
    要么你把m变成0,要么把m变成n-1,要么把m变成m+1,答案并不唯一,但是思路其实是一样的

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月29日

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥15 clion的参数提示怎么关闭
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻