[从头学数学] 第77节 可能性
来源:互联网 发布:ubuntu安装hp打印机 编辑:程序博客网 时间:2024/04/28 17:29
剧情提要:
[机器小伟]在[工程师阿伟]的陪同下进入练气期第九层功法的修炼,
这次要修炼的目标是[可能性]。
上面这个组合选择工具是用于这样一种情况:
虽然工具拿了出来,但是小伟发现,今天这层功法的修炼是用不上的,因为这层功法太简单了。
这样可以得到所有的可能选择。
来玩玩吧:
[机器小伟]在[工程师阿伟]的陪同下进入练气期第九层功法的修炼,
这次要修炼的目标是[可能性]。
正剧开始:
星历2016年02月09日 11:10:48, 银河系厄尔斯星球中华帝国江南行省。
[工程师阿伟]正在和[机器小伟]一起观赏[可能性]。
这应该就是概率论和大伙的初次见面了吧,[工程师阿伟]暗自想着。
关于可能性,一向是和排列,组合分不开的。
于是小伟就把这些的相关工具都拿出来了:
<span style="font-size:18px;">#全排列def perm(array): if (len(array)<=1): return [array]; r = []; for i in range(len(array)): #抽去array[i] s = array[:i]+array[i+1:]; p = perm(s); for x in p: #array[i]置顶 r.append(array[i:i+1]+x); return r;</span>
<span style="font-size:18px;">#求组合数的选择集def choice(ceil, chance): a = [[0]]; result = []; end = 0; bit = 0; #次数 #chance = 2; #最终封顶数 #ceil = 6; while (bit <= chance): bit = len(a[0]); if (bit <= chance): b = a.pop(0); end = b[-1]; for i in range(end+1, ceil+1): a.append(b+[i]); else: break; for i in range(len(a)): if a[i][-1] == ceil: result.append(a[i]); return result;</span>
上面这个组合选择工具是用于这样一种情况:
比如一个人想要确切的达到某个目的,那么这个目的地是确定的,但是这中间他所进行的每一步骤可以有多种选择,
而这个工具就可以告诉他有哪些选择符合要求。
而下面这个工具虽然也是组合,但用于另一类情况:
从某个大选择集中选出一部分组成一个子集,可以怎样选。
<span style="font-size:18px;">#求组合数的选择集def choice2(ceil, chance): a = []; result = []; end = 0; bit = 0; #次数 #chance = 2; #最终封顶数 #ceil = 6; chance -= 1; for i in range(ceil+1): a.append([i]); while (bit <= chance): bit = len(a[0]); if (bit <= chance): if (len(a)>0): b = a.pop(0); end = b[-1]; if (end + chance - bit < ceil+1): for i in range(end+1, ceil+1): a.append(b+[i]); else: break; return a; </span>
虽然工具拿了出来,但是小伟发现,今天这层功法的修炼是用不上的,因为这层功法太简单了。
既然[人叫板老师]让小伟来掷这个正方体,小伟就来玩一玩吧。
这个正方体呢,其实就是大名鼎鼎的骰子。
小伟早就想有一个这样的玩具了,这不,时机到了。
关于骰子上的点数的规则,小伟参照这个:对面点的和为7。
<span style="font-size:18px;">def dice(): a = []; for i in range(1, 7): for j in range(1, 7): for k in range(1, 7): if i+j != 7 and i+k != 7 and j+k!=7 and \ i != j and i != k and j!=k: a.append([i,j,k]); print(a);</span>
这样可以得到所有的可能选择。
接下来就可以产生骰子了。
<span style="font-size:18px;">function myDraw() { var config = new PlotConfiguration(); config.init(); config.setPreference(); config.setSector(1,1,1,1);config.axis3D(0, 0,0, 180);dice(80, 0, 'blue');}/*** @usage 骰子* @author mw* @date 2016年02月09日 星期二 08:58:27 * @param* @return**/ //骰子 dicefunction dice(r, rot, style) {plot.save().rotate(rot).setLineWidth(5);r = r ? r : 50;//dice(-r/2, r/2, r/2, 100, 'blue');var array = new Array();//骰子面上颜色style = style ? style : 'red';//骰子边框var style2 = 'white';//骰子规律,对面点数相加为7,所以相邻三面的选择集共48项var choice = [[1, 2, 3], [1, 2, 4], [1, 3, 2], [1, 3, 5], [1, 4, 2], [1, 4, 5], [1, 5, 3], [1, 5, 4], [2, 1, 3], [2, 1, 4], [2, 3, 1], [2, 3, 6], [2, 4, 1], [2, 4, 6], [2, 6, 3], [2, 6, 4], [3, 1, 2], [3, 1, 5], [3, 2, 1], [3, 2, 6], [3, 5, 1], [3, 5, 6], [3, 6, 2], [3, 6, 5], [4, 1, 2], [4, 1, 5], [4, 2, 1], [4, 2, 6], [4, 5, 1], [4, 5, 6], [4, 6, 2], [4, 6, 5], [5, 1, 3], [5, 1, 4], [5, 3, 1], [5, 3, 6], [5, 4, 1], [5, 4, 6], [5, 6, 3], [5, 6, 4], [6, 2, 3], [6, 2, 4], [6, 3, 2], [6, 3, 5], [6, 4, 2], [6, 4, 5], [6, 5, 3], [6, 5, 4]];var size = choice.length;var size = choice.length;var rand = Math.round(Math.random() * size) % size;var a = choice[rand][0], b = choice[rand][1], c = choice[rand][2];//骰子绘制for (var i = 0; i < 2; i++) {array.push(point3D(-r, -r, r));array.push(point3D(r, -r, r));array.push(point3D(r, r, r));array.push(point3D(-r, r, r));if (i == 0) {shape.fillDraw(array, style);}else {shape.strokeDraw(array, style2);}}for (var i = 0; i < 2; i++) {array.push(point3D(r, r, r));array.push(point3D(r, -r, r));array.push(point3D(r, -r, -r));array.push(point3D(r, r, -r));if (i == 0) {shape.fillDraw(array, style);}else {shape.strokeDraw(array, style2);}}for (var i = 0; i < 2; i++) {array.push(point3D(-r, -r, r));array.push(point3D(r, -r, r));array.push(point3D(r, -r, -r));array.push(point3D(-r, -r, -r));if (i == 0) {shape.fillDraw(array, style);}else {shape.strokeDraw(array, style2);}}//骰面数字绘制style = 'white';var digit = new Digit();plot.save().transform(1, Math.PI/8, -Math.PI/8, 0.5, 0, 0);digit.number(a, point3D(-0.5*r, -1.5*r, 0)[0], point3D(-0.5*r,-1.5*r,0)[1], r, style);plot.restore();plot.save().transform(1, 0, 0, 1, 0, 0);digit.number(b, point3D(0, 0, r)[0], point3D(0,0,r)[1], r, style);plot.restore();var digit = new Digit();plot.save().transform(1, 0, 0, 1, 0, 0);digit.number(c, point3D(r, 0, 0)[0], point3D(r,0,0)[1], r, style);plot.restore();plot.restore();}//三维点function point3D(x0, y0, z0) {z0 = z0 /2;x0 = x0 - z0*0.707;y0 = y0 + z0*0.707;return [x0, y0];}</span>
来玩玩吧:
来上三个骰子一起玩:
<span style="font-size:18px;">function myDraw() { var config = new PlotConfiguration(); config.init(); config.setPreference(); for (var i = 0; i < 3; i++) {config.setSector(1,3,1,i+1);config.axis3D(0, 0, 0, 100);dice(50, 0, 'red');}}</span>
但是这样不确定到底算哪个点,所以下面我们规定正面向上的点才算。
这次掷了三个2。
这次是3个5。
小伟想掷个三个6的豹子。
经过几十次的努力,小伟成功了!
本节到此结束,欲知后事如何,请看下回分解。
0 0
- [从头学数学] 第77节 可能性
- [从头学数学] 第03节 位置
- [从头学数学] 第40节 测量
- [从头学数学] 第52节 面积
- [从头学数学] 第65节 四则运算
- [从头学数学] 第69节 三角形
- [从头学数学] 第75节 位置
- [从头学数学] 第93节 比
- [从头学数学] 第94节 圆
- [从头学数学] 第98节 负数
- [从头学数学] 第101节 比例
- [从头学数学] 第108节 有理数
- [从头学数学] 第112节 一元一次方程
- [从头学数学] 第118节 实数
- [从头学数学] 第128节 三角形
- [从头学数学] 第132节 轴对称
- [从头学数学] 第136节 分式
- [从头学数学] 第140节 勾股定理
- 2.UIView的认识
- 思维导图之《时间的朋友》
- 嵌入式linux中nRF24L01驱动(主控板tiny4412)
- 迭代器模式——解决问题的第三者
- 数据结构: 栈
- [从头学数学] 第77节 可能性
- 3.以普通表格型单表为模板定制模块:短信库维护
- cocos2d-x3.2 的UserDefault
- document.documentElement和document.body的 scrollHeight/scrollTop/clientHeight 以及判断滚动条是否已拉到页面最底部
- java实现逆波兰式四则运算
- 基于Android arm64 Linux got 调试_02
- 雷思海:500年的猴子,只说了一桩心事
- 3.定时任务处理
- NLP系列(5)_从朴素贝叶斯到N-gram语言模型