怎么用c语言编写一个程序,可以在A和B两个选项中随机出现一个结果,概率为50%?
网友解答: 给一个参考思路,可以写一个子程序,其功能是,在A和B两个选项中均匀的返回其中的一个,代码可以参考如下:上面代码中先定义包含两个选项的数组opts,然后产生1-10之间的随机整
给一个参考思路,可以写一个子程序,其功能是,在A和B两个选项中均匀的返回其中的一个,代码可以参考如下:
上面代码中先定义包含两个选项的数组opts,然后产生1-10之间的随机整数data,然后定义一个整数i,其值取决于data值所在的区间范围,若data值在1-5之间,则i=0,否则i=1。最后将i的值作为索引,索引出opts对应的选项就可以了,0索引出选项A,1索引出选项B。
下面写一个测试程序代码如下:
其运行结果如下图所示:
在10次结果中,选项A和B基本上是均匀出现的。
当然如果你的测试次数足够多的话,选项A和B出现的概率结果更接近于50%。
网友解答:呵呵,感谢楼主提问这个问题,这是在考我智商呢!咱能不能不出这些脑筋急转弯行不!呵呵开个玩笑非常感谢楼主给我这个机会,我的答案是:用c语言启动两个线程一个选择a选项,一个线程选b选项,并且选择是随机的,但可以保障概率肯定是50%的!那为啥是随机的呢?是因为线程是被操作系统调度的,那么调度有一定的算法给我们的表象是选择答案是随机的,但两个线程输出选项肯定是50%,为什么呢?这原理很简单如果我给两个线程加把锁那么他们肯定是先A后B,那么我如果不加是不是操作系统调度他们的几率是一样的只不过是出现的是随机的,因为线程的优先级和调度权重是一样的!看似是一个简单的问题,但却要你有很扎实的c语言编程能力和丰富的操作系统知识!好的!问题就回答到这里如果喜欢我的回答请关注”嘿咪编程专家”,后续会有更多精彩的回答与大家分享!有疑问随时可私信或留言我会第一时间回复大家谢谢!