Python编程产生非计算器产生均匀随机数数的几种方法代码

查看: 3553|回复: 13
怎么一下生成30个随机数使他们的和等于1000
马上注册加入鱼C,享用更多服务吧^_^
才可以下载或查看,没有帐号?
import random
number = random.randint(0,1000)
print(number)
while time&29:
& & number = random.randint(0,(1000-a))
& & print(number)
& & a = a + number
& & time = time +1
我这样写的代码到后面几个随机数就都是0了
你可以把每次取随机数的范围稍稍调小些,我写了个供参考:
import random
def generate_rand(n, sum_v):
& & temp = random.randint(0, sum_v//20)
& & print(temp)
& & if n&0:
& && &&&generate_rand(n-1, sum_v-temp)
generate_rand(30,1000)复制代码
结果是:
49
7
31
16
12
3
14
1
3
31
25
24
12
6
37
16
21
29
1
0
21
31
7
19
9
4
22
14
25
14
19复制代码
你可以把每次取随机数的范围稍稍调小些,我写了个供参考:
但是这样的话得到的结论不能保证和等于1000啊
这题我看过,其实和微信发红包原理是一样的,链接在这里,楼主慢慢看https://www.zhihu.com/question/
哈哈,我犯二了,稍微修一下就可以了!
import random
def generate_rand(n, sum_v):
& & temp = random.randint(0, sum_v//20)
& & print(temp)
& & if n&1:
& && &&&generate_rand(n-1, sum_v-temp)
& & else:
& && &&&print(sum_v-temp)
data = generate_rand(30,1000)复制代码
这样稳稳的!
我的思路,首先将1000想象成一个从0到1000的数轴,再生成29个0~1000的随机数并从大到小排序作为数轴的分隔点,将数轴分为30段,这样就得到了30个总和为1000的随机数。
&&& import random
&&& list1 = [random.randint(0, 1000) for i in range(29)]
&&& list1.sort()
&&& list2 = []
&&& list2.append(list1[0])
&&& for i in range(28):
& & & & list2.append(list1[i + 1] - list1[i])
&&& list2.append(1000 - list1[28])
&&& list2
[18, 112, 6, 31, 24, 28, 56, 68, 28, 11, 53, 35, 27, 20, 37, 56, 19, 24, 23, 4, 31, 123, 41, 23, 22, 0, 21, 15, 32, 12]
&&& sum(list2)
1000复制代码
哈哈,我犯二了,稍微修一下就可以了!
这样稳稳的!
恩恩~~谢啦
我的思路,首先将1000想象成一个从0到1000的数轴,再生成29个0~1000的随机数并从大到小排序作为数轴的分隔 ...
这方法完美!非常感谢
又想了一下,其实这个实现可以很简单,是我之前把问题复杂化了,下面这样写更好一些:
import random
def generate_rand(n, sum_v):
& & Vector = [random.random() for i in range(n)]
& & Vector = [ int(i / sum(Vector) * sum_v) for i in Vector]
& & if sum(Vector) & sum_v:
& && &&&Vector[0] += sum_v-sum(Vector)
& & return Vector
print(generate_rand(30,1000))复制代码
感谢楼主的分享,受益匪浅。
都是高手啊,我怎么看不懂啊。我都快学了一个月python了
哇塞,学习学习
厉害厉害。
刚刚开始学习。一起加油
小甲鱼强烈推荐 /1
新的视频新的面貌,希望大家喜欢 (≧∇≦)ノ
- - - - - - - - - - - -
新课程,新体验!
Powered by11:29 提问
python产生100个随机数,每个随机数之间的差值为固定值?
想用python自动生成100个0到1之间的随机数,但是要求这一百的随机数之间两两差值的绝对值大于等于固定值(比如差值绝对值大于等于0.125),并且把复合要求的100个随机数写到一个txt文件中。谢谢大家
回复数排序
import random
f = open("data_100.txt","a+",encoding="utf-8")
for x in range(100):
a = random.random()
b = random.random()
if a - b &=0.125 or b - a &=0.125:
f.write(str(a))
f.write(str(b))
f.write('\n')
在0到1之间生成100个随机数,要使这100个随机数两两之间的差大于0.125是不可能的。
#!usr/bin/env python
#_*_ coding:utf-8 _*_
import random
with open('ana2.txt','a+') as f:
for i in range(100):
x=random.random()
y=random.random()
if abs(x-y)&=0.25:
f.write('\n'+'x='+str(x)+'\t'+'y='+str(y))
问题来了: 什么叫两两之间
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐您的位置 >
& python 随机数生成的代码的详细分析
python 随机数生成的代码的详细分析
python 随机数生成的代码的详细分析如果你对python随机数生成的实际应用有不解之处,你就可以通过以下的内容对其进行了解,以下十九相关内容的介绍以下的文章主要是以介绍python随机数生成的代码来介绍Python随机数生成在实际操作过程中的具体应用,如果你对其的相关内容感兴趣的话,你就可以点击以下的文章。希望你会对它有所收获。Python中的random模块用于生成随机数。下面介绍一下random模块中最常用的几个函数。代码如下:random.randomrandom.random()用于生成一个0到1的随机符点数:代码如下:0 &= n & 1.0random.uniformrandom.uniform的函数原型为:代码如下:random.uniform(a, b)用于生成一个指定范围内的随机符点数,两个参数其中一个是上限,一个是下限。如果a & b,则生成的随机数n: a &= n &= b。如果 a &b, 则代码如下:b &= n &= a print random.uniform(10, 20) print random.uniform(20, 10)结果(不同机器上的结果不一样)18. #12. random.randintrandom.randint()的函数原型为:代码如下:random.randint(a, b)用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限,python随机数生成代码如下:n: a &= n &= bprint random.randint(12, 20)生成的随机数n: 12 &= n &= 20 print random.randint(20, 20)结果永远是代码如下:20 #print random.randint(20, 10)该语句是错误的。下限必须小于上限。 以上的内容就是对python随机数生成的实际操作的部分介绍。完
本文已经过优化显示,查看原文请点击以下链接:
点击风云榜
京ICP备号  京ICP证090565号 京公网安备号 论坛法律顾问:王进律师   主办单位: 版权所有
 邮箱:service@pinggu.org
合作咨询电话:(010)
广告合作电话:(刘老师)
投诉电话:(010) 不良信息处理电话:(010)随笔 - 2029&
文章 - 1&评论 - 149&trackbacks - 0
这篇文章主要介绍了Python生成随机数的方法,有需要的朋友可以参考一下
如果你对在Python生成随机数与random模块中最常用的几个函数的关系与不懂之处,下面的文章就是对Python生成随机数与random模块中最常用的几个函数的关系,希望你会有所收获,以下就是这篇文章的介绍。
random.random()用于生成
用于生成一个指定范围内的随机符点数,两个参数其中一个是上限,一个是下限。如果a & b,则生成随机数
n: a &= n &= b。如果 a &b, 则 b &= n &= a。
print random.uniform(10, 20)&
print random.uniform(20, 10)&
random.randint
用于生成一个指定范围内的整数。其中参数a是下限,参数b是上限,Python生成随机数
print random.randint(12, 20)
print random.randint(20, 20)
下限必须小于上限。
random.randrange
从指定范围内,按指定基数递增的集合中 ,这篇文章就是对python生成随机数的应用程序的部分介绍。
随机整数:&&& import random&&& random.randint(0,99)21
随机选取0到100间的偶数:&&& import random&&& random.randrange(0, 101, 2)42
随机浮点数:&&& import random&&& random.random()&0.85668&&& random.uniform(1, 10)5.0881
随机字符:&&& import random&&& random.choice('abcdefg&#%^*f')'d'
多个字符中选取特定数量的字符:&&& import randomrandom.sample('abcdefghij',3)&['a', 'd', 'b']
多个字符中选取特定数量的字符组成新字符串:&&& import random&&& import string&&& string.join(random.sample(['a','b','c','d','e','f','g','h','i','j'], 3)).replace(" ","")'fih'
随机选取字符串:&&& import random&&& random.choice ( ['apple', 'pear', 'peach', 'orange', 'lemon'] )'lemon'
洗牌:&&& import random&&& items = [1, 2, 3, 4, 5, 6]&&& random.shuffle(items)&&& items[3, 2, 5, 6, 4, 1]
阅读(...) 评论()Python 随机数的产生
Random生成随机数有以下几种函数:
(1)random.random:用于生成0~1的随机浮点数;
(2)random.uniform(a,b):用于生成一个指定范围内的随机符点数,两个参数其中一个是上限,一个是下限;
(3)random.randint(a, b):生成指定范围内的整数;
(4)random.randrange(a,b,c):a,b为范围,c为步长从指定范围内,按指定基数递增的集合中获取一个随机数。
(5)random.shuffle(x[, random]):讲一个数组的元素打乱;
(1)生成一个在一定范围内可重复的随机数
def random_int_list(a, b, length):
a, b = (int(a), int(b)) if a &= b else (int(b), int(a))
length = int(abs(length)) if length else 0
random_list = []
for i in range(length):
random_list.append(random.'randint(a, b)')
return random_list
list1=random_int_list(1,10,10)
运行结果:[6, 10, 1, 10, 3, 8, 10, 10, 4, 9]
(2)在一定范围内生成不可重复的随机数
resultList=[]
def generateRand(counter):
tempInt=random.randint(A,B);
if(counter&=COUNT):
if(tempInt not in resultList):
resultList.append(tempInt);
counter+=1;
generateRand(counter);
resultList=random.sample(range(A,B+1),COUNT);
print(resultList)
运行结果:[6, 7, 10, 4, 1, 5, 9, 2, 8, 3]
python生成随机数
Python生成随机数的一些函数
Python 生成一组随机数列表
在Python中生成随机数
python生成随机数方法小结
python随机数
python生成随机数组【转】
python如何一次性取出多个随机数
python生成随机数组
Python3:在0-1之间生成10个随机数
没有更多推荐了,}

我要回帖

更多关于 均匀随机数的产生习题 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信