python 编程练习——平方取中法生成随机数

Python YX ⋅ 于 2020-05-14 15:38:06 ⋅ 最后回复由 RickyChen 2020-05-18 09:29:09 ⋅ 332 阅读
平方取中法生成随机数

file

参考文献

数学建模(原书第5版)/华章数学译丛

file

成为第一个点赞的人吧 :bowtie:
回复数量: 4
  • RickyChen GKFCCCCCCCCCCCCCCCCCCCCCC
    2020-05-17 19:37:39

    我的想法是避免取余操作,以减少程序的计算复杂度,所以首先通过list.map实现平方后的值作为字符逐位存入一个list中;紧接着通过len()对平方后的位数进行奇偶判断,以决定是否需要补零;最后同样通过map的方法实现取出中位数据的拼接并强制整形。
    通过循环实现连续操作计算,最后得到所有的随机数以及个数。

  • RickyChen GKFCCCCCCCCCCCCCCCCCCCCCC
    2020-05-18 01:38:31
    # -*- coding: UTF-8 -*-
    def isolated(squ_num):
        squ_list = map(eval, str(squ_num))
        # print(squ_list)
        list_len = len(squ_list)
        # print(list_len)
        if (list_len % 2) != 0:
            squ_list.append(0)
    
        # print(squ_list)
        mid_list = []
        list_len = len(squ_list)
        mid_num = len(squ_list) / 2
        for x in range(mid_num - 2, mid_num + 2):
            mid_list.append(squ_list[x])
    
        # print(mid_list)
        cyc_num = int(''.join(map(str, mid_list)))
        print(cyc_num)
        return cyc_num
    
    initial_num = 2041
    times = 1
    cyc_num = isolated(initial_num * initial_num)
    
    while True:
        if cyc_num == 0:
            break
        else:
            cyc_num = isolated(cyc_num * cyc_num)
            times = times + 1
    
    print(times, 'random numbers')
    
  • RickyChen GKFCCCCCCCCCCCCCCCCCCCCCC
    2020-05-18 09:28:54

    另外一个想法是,将所需取中位数字的数进行小数点移位并强制整形,最后通过减法保留所需要的数值

  • RickyChen GKFCCCCCCCCCCCCCCCCCCCCCC
    2020-05-18 09:29:09
    # -*- coding: UTF-8 -*-
    import numpy as np
    
    init_num = 2041
    bit_num = 4
    random_num = 1
    while random_num:
        random_num = init_num*init_num
        shift_num = int(random_num / np.power(10, int(bit_num/2)))
        bit1 = shift_num / np.power(10, bit_num)
        bit2 = int(bit1)
        random_num = int((bit1-bit2) * np.power(10, bit_num))
        init_num = random_num
        print(random_num)
    
暂无评论~~
  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 Emoji 自动补全来咯,可用的 Emoji 请见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
Ctrl+Enter