多平台统一管理软件接口,如何实现多平台统一管理软件接口
345
2022-08-30
生成/得到指定范围内的随机数(数组)(基于[0,1)的随机数制作)得到[x,y](numpy/js)/得到不重复的指定范围内的随机数
文章目录
生成/得到指定范围内的随机数(数组)(基于[0,1)的随机数制作)/得到不重复的指定范围内的随机数/python随机数模块
特殊的一般的numpy为例result得到指定范围内的整数数组result
js做法
reference link得到不重复的指定范围内的随机数
python
python自带实现(sample)手工实现&可能的实现方式
python随机数模块
运行结果(某一次)
生成/得到指定范围内的随机数(数组)(基于[0,1)的随机数制作)/得到不重复的指定范围内的随机数/python随机数模块
特殊的
得到[0,right)内的随机数,我们可以: 通过类似right*randomNumber的方式得到(randomNumber属于[0,1)
一般的
numpy为例
假设我们要得到[4,7)内的随机浮点数(不严谨的) (同时可以指定规格为shape=(14行,2列)
import numpy.random as nprbase_arr=npr.random(size=(14,2))ret=base_arr*3+4# base_arrprint(ret)
result
[[6.89122681 6.10158659] [6.33307061 4.92960413] [5.8762254 5.9819728 ] [4.03721165 4.23484648] [5.24072258 6.1540796 ] [5.25448255 5.23909412] [5.5258725 6.9564065 ] [5.30905859 4.98276731] [5.05256872 6.05561397] [4.6796204 6.18480935] [4.34248753 4.27403326] [5.03151893 6.72885987] [6.63896369 6.91770448] [5.35079495 6.57409296]]
得到指定范围内的整数数组
既然考虑使用numpy,就可以直接一步到位
import numpy.random as nprsize=(14,2)# size 规格range_int_arr=npr.randint(4,7+1,size)print(range_int_arr)
result
❯ py random_numpy.py[[5 7] [4 7] [5 7] [5 7] [5 7] [6 4] [4 7] [7 7] [7 4] [7 7] [4 7] [4 6] [6 5] [6 6]]
js做法
您可以这样写
Math.floor(Math.random() * (max - min + 1)) + min
这里用到向下取整
reference link
Math.random() - JavaScript | MDN (mozilla.org)示例 (mozilla.org)
得到不重复的指定范围内的随机数
python
如何生成指定范围内的不重复的一批随机数/乱序数
python自带实现(sample)
random — 生成伪随机数 — Python 3.10.4 文档
population=('a', 'b', 'c', 'd')rand_sample_immutable2 = random.sample( population,k=len(population))print("@rand_sample_immutable2:", rand_sample_immutable2)#@rand_sample_immutable2: ['d', 'c', 'a', 'b']
手工实现&可能的实现方式
打乱数组法在python中,可以用shuffle函数进行打乱,然后返回这个被打乱的数组(部分或者全部)返回随机抽取的对象手动生成指定范围内的序列,存储在容器中(例如列表/数组)打乱这个序列(执行shuffle操作/或者自行实现shuffle操作)再以这些随机(乱序)数作为key/index,到容器中取出对象例如:生成指定数目(譬如20个)值在20~100内的数(20个值不重复)
import random as randdef get_range_randoms(low=20, high=100, size=10, is_contain_high=0, is_sorted=1): ''' :param low: 随机数下界 :type low: :param high: 随机数上界 :type high: :param size: 需要取出多少个随机数 :type size: :param is_contain_high:默认开区间; 0表示开区间;1表示闭区间 :type is_contain_high: :param is_sorted: 默认排序;0表示排序;1表示排序; :type is_sorted: :return: :rtype: ''' if is_contain_high: high += 1 range_list = list(range(low, high)) # 如果需要闭区间,可以为upper_bound+1 rand.shuffle(range_list) shuffled_list = range_list sized_list = shuffled_list[:size] # print(randon_list) ## # 可选(排序这些随机数) if (is_sorted): sized_list.sort() # 查看结果 return sized_listres=get_range_randoms(55, 177, 10, is_contain_high=0,is_sorted=1)print(res)
python随机数模块
# from random import randomimport random# 获取闭区间内的随机数rand_int = random.randint(1, 10)print("@rand_int:", rand_int)rand_int = random.randrange(1, 10 + 1)print("@rand_int:", rand_int)# 获取0-2^k次幂内的整数(左闭右开)0...(111..1)rand_bits = random.getrandbits(2)print("@rand_bits:", rand_bits, type(rand_bits))# 从给定的序列(集合)中随机选中一个元素rand_choice = random.choice(['a', 'b', 'c', 'd'])print("@rand_choice:", rand_choice)# 从给定的序列中返回子集rand_choices = random.choices(population=['a', 'b', 'c', 'd'], k=3)print("@rand_choices:", rand_choices)# rand_shuffle = random.shuffle(['a', 'b', 'c', 'd'])# 不恰当当用法,返回None;被随机排序的对象会发生改变!seq_mutable= ['a', 'b', 'c', 'd']seq_mutable_bak=seq_mutable.copy()random.shuffle(seq_mutable)print("@rand_shuffle:", seq_mutable,'<-',seq_mutable_bak)rand_sample_immutable = random.sample(population=('a', 'b', 'c', 'd'), k=3)print("@rand_sample_immutable:", rand_sample_immutable,'<-',('a', 'b', 'c', 'd'))population=('a', 'b', 'c', 'd')seq_sample = random.sample(population, k=len(population))print("@rand_sample_immutable2:", seq_sample, '<-', population)
运行结果(某一次)
@rand_int: 3@rand_int: 9@rand_bits: 3
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~