概述
不用随机函数rand(),给定特定随机函数f,设计如何生成其他的随机函数g?
提示:技巧性很强,二进制编码的问题
文章目录
- 不用随机函数rand(),给定特定随机函数f,设计如何生成其他的随机函数g?
- @[TOC](文章目录)
- 题目
- 设计g,它能产生1--10内的随机数
- 设计g,它能产生30--35内的随机数
- 总结
文章目录
- 不用随机函数rand(),给定特定随机函数f,设计如何生成其他的随机函数g?
- @[TOC](文章目录)
- 题目
- 设计g,它能产生1--10内的随机数
- 设计g,它能产生30--35内的随机数
- 总结
题目
不用随机函数rand(),给定特定随机函数f,设计如何生成其他的随机函数g
比如:
(1)f可以生成1–7的随机数,请你设计g,它能产生1–10内的随机数
(2)f可以生成20–25内的随机数,请你设计g,它能产生30–35内的随机数
设计g,它能产生1–10内的随机数
(1)f可以生成1–7的随机数,请你设计g,它能产生1–10内的随机数
原本呢?
咱们可用Math.rand()产生0–1之间的随机小数,乘10就是0–9之间的数字,可以代表1–10
那么现在不让用了
不过咱们有f,它可以产生1–7之间的数,如何对应随机生成0–9呢???
咱们这一次学完你就能理解,这样搞:
(1)将f产生的数中,123当做0,456当做1,7不要了
(2)f随机生成3次,如果数为abcd,自然可以当初是0000–1111的随机数,咱们只用其中的0–9就行了
这样g就设计出来了
是不是很妙?
这里不要的那些,不要认为是缺失了,咱就是不要,反正f就是随机出1–7
遇到123咱当0,遇到456当1,遇到7当没干,重新来过
每次都是随机搞abcd,一定是等概率出0–15,咱们遇到0–9要了,否则重新来过。
设计g,它能产生30–35内的随机数
(2)f可以生成20–25内的随机数,请你设计g,它能产生30–35内的随机数
好说,f+10=g完事
另外,也可以这么搞
20 21 22当0
23 24 25当1
f每次随机出3个abc
组合000—111
那只要0–5,把67扔掉
然后让abc+30就是g了
30–35
是不是也很巧
总结
提示:重要经验:
(1)f可以生成1–7的随机数,请你设计g,它能产生1–10内的随机数
(2)f可以生成20–25内的随机数,请你设计g,它能产生30–35内的随机数
3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。
最后
以上就是土豪麦片为你收集整理的不用随机函数rand(),给定特定随机函数f,设计如何生成其他的随机函数g不用随机函数rand(),给定特定随机函数f,设计如何生成其他的随机函数g?题目设计g,它能产生1–10内的随机数设计g,它能产生30–35内的随机数总结的全部内容,希望文章能够帮你解决不用随机函数rand(),给定特定随机函数f,设计如何生成其他的随机函数g不用随机函数rand(),给定特定随机函数f,设计如何生成其他的随机函数g?题目设计g,它能产生1–10内的随机数设计g,它能产生30–35内的随机数总结所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复