Python - 怎么将一个数字拆分成多个随机数字

article/2025/8/28 12:04:54

前情提要

使用numpy.random.choice()的时候,通过参数p(一个列表)来指定所给选择元素的选择概率。但参数p(选择概率)要保证和为1,这时我又想随机生成选择概率,所以现在的问题就是怎么将1拆分成多个和为1的浮点数。

这个问题但凡读过小学都应该知道怎么解决,但问题是我是个大学生(手动狗头)。

如何解决

例如,现在要将1拆分成8个随机浮点数

  1. 先随机生成8个整数,例如:2,3,5,6,7,8,2,5
  2. 求这8个整数之和sum,即:38
  3. 再用1来乘各个比例,这里没有必要,但是其他数字的拆分就有必要。

例如,要将100拆分成5个随机数

  1. 随即生成5个整数,例如:1,1,2,3,3
  2. 和为10
  3. 拆分结果为:100*(1/10) = 10, 100*(2/10) = 20, 100*(3/10) = 30,10+10+20+30+30=100

代码

import numpy as np
from random import randintdef func(split_num):rand_ls = [randint(0, 10) for _ in range(split_num)]rand_sum = sum(rand_ls)p = list(map(lambda i: i/rand_sum, rand_ls))return pchoice_ls = [1, 2, 3, 4, 5, 6, 7, 8]
x = np.random.choice(choice_ls, replace=True, p=func(len(choice_ls)))

若p和不为1,则报错如下:
在这里插入图片描述


http://chatgpt.dhexx.cn/article/KqjEgWWk.shtml

相关文章

python随机生成一个数字_如何实现python随机生成数字?

今天小编就生成随机数,整理了多个方式,方便大家在项目时,根据自己的需求,直接拿来套用即可,以下内容相当详细,具体来看看吧~ 说明:python中生成随机数主要用到random模块,方法主要包括:randint、uniform、random、sample、choice等几种常用方法; 环境:Mac OS 10.1…

python随机生成三位数字_python3 随机生成数字

原博文 2019-11-25 10:07 − random模块 random.randint(1,10)--随机生成0-10之间的随机整数 random.uniform(1,10)--随机生成0-10之间的实数 random.randrange(9,100,10)--从9-100之间随机选取一个实数,差为10,也就是说从9,19,29,39,49... 0 3530 相关推荐 2019-12-0…

C#生成含数字字母的随机字符串

C#生成含数字字母的随机字符串 要求生成的字符串是随机的,也就是字母和数字都需要随机,既可能只包含数字,也可能只包含字母,也可能两者都有。 实现方式如下: 首先定义一个包含所有字母和数字的字符串和一个空串,随后…

css 随机 数,纯CSS实现随机效果

最近在Codepen上看到了Adir写的随机翻牌和找蛋蛋(可以想象是砸金蛋)效果,让我再次刷新了对CSS的认知。看到这两个效果之后我才知道,在CSS中除了可以实现 来自其他语言的随机性 众所周知,CSS是一种声明式的标记语言。在很多同学的认知中&#…

舒尔特表-5*5表格1-25个数字随机生成且不重复

大家好&#xff1a;最近在玩快速记忆&#xff0c;看到舒尔特表&#xff0c;整理出一版来。v1.0版本。 舒尔特表&#xff1a;5*5表格 1-25个数字&#xff0c;随机生成且不重复。 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http:/…

计算机随机数字excel,excel怎么生成随机数字 excel随机数字区间怎么设定

excel是我们日常生活中处理表格数据必备的工具&#xff0c;当我们知道了一定范围内的数值&#xff0c;并且不用精准的数值时&#xff0c;我们完全可以设置excel随机生成数字即可&#xff0c;怎么设置?很简单&#xff0c;下面小编为大家带来excel生成随机数字的详细教程&#x…

随机生成4个数字php,PHP随机生成4位数字的方法

//方法1 $code .mt_rand(1000,9999).; echo $code; echo ; //方法2 $code .mt_rand(1000,9999).; echo $code; echo ; //方法3 $code ; $code..mt_rand(0,9).; $code..mt_rand(0,9).; $code..mt_rand(0,9).; $code..mt_rand(0,9).; echo $code; echo ; //方法4 $code ; $r…

java生成1到10的随机数_用java生成一个1到10十个数字随机排列的数组

效果如图&#xff1a; 代码如下public class ArrayListToAry { public static void main(String[] args) { // 数组 int[] ary new int[10]; // 集合 ,临时集合temp存放1~10个数字 ArrayList temp new ArrayList(); //list集合存放需要的数字 ArrayList list new ArrayList(…

你知道如何生成随机数吗?(超详细附图)

目录 &#x1f609;前言 &#x1f378;如何用C语言实现随机数 &#x1f379;随机数原理 &#x1f379;rand函数&#xff08;生成随机数&#xff09; &#x1f379;srand&#xff08;避免每次运行程序产生的随机数都相同&#xff09; &#x1f379;时间戳 &#x1f964;t…

如何批量生成个位随机数字

众所周知&#xff0c;条码软件可以批量打印条码二维码以及各种各样的产品标签&#xff0c;功能比较齐全&#xff0c;在输入数据时有各种类型&#xff0c;比如手动输入、计数器生成、数据库字段、日期时间、序列生成、流水号等等。今天小编给大家介绍如何随机生成个位数字。 打开…

使用cmd查看端口号

打开cmd命令窗口&#xff1b;输入 netstat -nao|findstr "端口号" &#xff1b;在本地地址中查看端口号&#xff0c;并记住该进程的PID&#xff1a;在运行中输入taskmgr打开任务管理器&#xff0c;在名称一处右击&#xff0c;选中PID&#xff1b;查看第三步的PID所对…

【cmd命令】查看端口占用情况

1、昨晚安装BIS 6遇到一个问题&#xff0c;本地10000端口被占用&#xff0c;安装进行不下去。 2、通过netstat -ano&#xff08;-a 显示所有socket&#xff0c;包括正在监听的&#xff1b;-n 以网络IP地址代替名称&#xff0c;显示出网络连接&#xff1b;o查看进程pid&#xff…

windows cmd关闭端口命令

netstat -ano|findstr 8906taskkill /pid 23440 /f

cmd解决端口被占用

文章目录 一、winr打开cmd窗口二、查找被占用端口的pid号&#xff0c;例如8080端口三、通过命令杀掉当前pid进程总结 一、winr打开cmd窗口 二、查找被占用端口的pid号&#xff0c;例如8080端口 输入命令&#xff1a;netstat -aon|findstr "8080" 如果有如下输出&…

cmd命令查看端口,并强制关闭该端口号

1.查看端口&#xff08;删除8080是指查看所有端口&#xff09; netstat -aon|findstr 8080 2.强制关闭端口号 taskkill /pid 3784 /f 例如&#xff1a;效果如下图

计算机cmd测试命令,常见CMD网络诊断命令

在维修电脑的时候&#xff0c;我们可以利用一些简单的CAM命令来查看当前网络的一些状态。 操作方法 ,在开始中找到运行框&#xff0c;输入cmd&#xff0c;打开批处理窗口。输入CMD命令按回车键。 1 Ping命令 ping IP地址 &#xff0d;t 用于测试此电脑到目标IP地址的数据连通性…

CMD 命令查看本机的端口占用情况解决办法

操作步骤&#xff1a; 打开cmd命令提示符&#xff0c;输入netstat -ano&#xff0c;可以看到当前本机的所有端口情况。 &#xff08;1&#xff09;地址一栏相关说明&#xff1a;0.0.0.0是对外开放&#xff0c;通过服务域名、ip可以访问的端口。​ 127.0.0.1只能对本机…

cmd+查看远程服务器端口,CMD下查3389远程端口

Windows Server服务器远程登录端口默认为3389&#xff0c;如果要查看确认当前使用的远程登陆端口可以使用tasklist /svc和netstat /ano两条命令查出来。 打开“开始”-“运行”&#xff0c;输入cmd回车进入命令行界面。 输入 tasklist /svc 回车&#xff0c;查看结果&#xff0…

用cmd 命令行关闭端口占用的命令

1.按windowR,输入cmd 2.2.输入命令&#xff1a;netstat -nao | findstr 端口号 我被占用的端口是8088 可以看到对应的进程是8812 3.输入taskkill /pid &#xff08;进程IP&#xff09; 4.taskkill/F /pid 进程IP&#xff0c;可以看到终止成功。

Window 通过cmd查看端口占用、相应进程、杀死进程等的命令

一、 查看所有进程占用的端口 在开始-运行-cmd,输入如下命令可以查看所有进程 netstat –ano二、查看占用指定端口的程序 查询占用了8080端口的进程,最后一列即为PID netstat -ano|findstr "8080"三、杀死相关的进程 方法一:使用任务管理器杀死进程 打开任务…