使用python已知平均数求随机数
问题描述:产生40个数,范围是363-429之间,平均值为402
思路:
1 产生一个随机数
2 使用平均数减去随机数求出第二个数,生成20组
3 将排序打乱
# -*- coding: cp936 -*- import random import string ###################产生随机整数################### ###################第一个数随机产生,第二个使用平均数求出################### #count 数字的个数 #average 平均数 #begin 起始区间 #end 结束区间 def int_random (count, average, begin, end): #print "wzh_random" numarr = [0 for x in range(2)]; i = 0; while (1): num_first = random.randrange(begin, end); #第二个数 num_second = average * 2 - num_first; if (num_second >= begin and num_second <= end): numarr[i] = num_first; i = i + 1; numarr[i] = num_second; break return numarr; ###################产生随机数################### ###################第一个数随机产生,第二个使用平均数求出################### #count 数字的个数 #average 平均数 #begin 起始区间 #end 结束区间 def float_random (count, average, begin, end): #print "wzh_random" numarr = [0 for x in range(2)]; i = 0; while (1): num = random.uniform(begin, end); #取两位小数 num_first = round(num, 2); #第二个数 num_second = average * 2 - num_first; if (num_second >= begin and num_second <= end): numarr[i] = num_first; i = i + 1; numarr[i] = num_second; break return numarr; ###################写文件################### def write_file (filename, content): fo = open (filename, "ab"); fo.write(content); fo.close(); def show_list (list): for i in list: print i, print; ###################主函数调用产生整形随机数################### #40个数字,平均数400,363 - 429 之间 def test_random_int(): count = 40; average = 402; begin = 363; end = 429; numarr_count = 0; numarr = [0 for x in range(count)]; for i in range (count / 2): list = int_random (40, 402, 363, 429) j = 0; for j in range (len(list)): numarr[numarr_count] = list[j]; numarr_count += 1; content = ''; #打乱排序 print "数据未打乱:"; show_list (numarr) random.shuffle(numarr); print "数据打乱:"; show_list (numarr) for i in numarr: content = content + ' ' + str(i); #print content; #追加写入文件 filename = "test.txt"; print "文件名称:",filename; write_file (filename, content) write_file (filename, "\n"); ###################主函数调用产生实型随机数################### #40个数字,平均数400,363 - 429 之间 def test_random_float(): count = 40; average = 402; begin = 363; end = 429; numarr_count = 0; numarr = [0 for x in range(count)]; for i in range (count / 2): list = float_random (40, 402, 363, 429) j = 0; for j in range (len(list)): numarr[numarr_count] = list[j]; numarr_count += 1; content = ''; #打乱排序 print "数据未打乱:"; show_list (numarr) random.shuffle(numarr); print "数据打乱:"; show_list (numarr) for i in numarr: content = content + ' ' + str(i); #print content; #追加写入文件 filename = "test.txt"; print "文件名称:",filename; write_file (filename, content) write_file (filename, "\n"); #调用测试产生整形随机数 test_random_int(); #调用测试产生实型随机数 test_random_float();