比如说我要填一百个数,随机填入百分之七十的数字1,百分之二十的数字2,百分之十的数字3。而且在B1-B100中这三个数字是打乱的,请问具体的excel函数是什么😭
引用chatgpt部分指引作答:
两种方法:
第一种:
用公式:=CHOOSE(RANDBETWEEN(1,10),1,1,1,1,1,1,1,2,2,3),复制到第一个单元格,点击+号向下拉就OK了
第二种:
你还可以使用Excel的"数据分析"工具来生成指定比例的随机数。可以按照以下步骤进行操作:
1 确保"数据分析"工具已经加载。如果没有加载,可以通过点击"文件" -> "选项" -> "加载项" -> "Excel加载项" -> "数据分析工具"进行加载。
2 在B1-B100中填入1、2、3的初始值。
3 选择"B1-B100"范围。
4 点击"数据"选项卡中的"数据分析",然后选择"随机数生成器"。
5 在"随机数生成器"对话框中,选择"整数"选项,设置"生成数量"为100,勾选"置换选定的值"。
6 在"概率分布"选项卡中,输入1、2、3的对应概率为70%、20%、10%。
7 点击"确定"生成随机数。
这样,B1-B100范围中的数字就会根据指定的比例随机生成,并且是打乱的。
试试这个公式:=INDEX({1,2,3},RANDBETWEEN(1,100))
第一个单元格填入这个公式后,鼠标移到这个单元格右下角,鼠标变成+,点住往下拉,填充下面99个单元格。这 100 单元格中的数字就会以 70% 的概率为 1,20% 的概率为 2,和 10% 的概率为 3 填充,并且它们是随机打乱的。
可以使用Excel自带的RANDBETWEEN函数和IF函数来实现这个功能。具体的公式如下:
在B1单元格中输入以下公式:=IF(RANDBETWEEN(1,100)<=70,1,IF(RANDBETWEEN(1,100)<=90,2,3))
然后将B1单元格中的公式复制到B2-B100单元格即可。
用python还是容易写出来的,如下:
import random
N = 20
data, percent = range(1, 4), [0.7, 0.2, 0.1]
while 1:
res = random.choices(data,weights=percent,k= N)
if [res.count(i) for i in data]== list(map(lambda x: x * N , percent)) :
break
print(res)
--result 20个数的
[1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 1, 1, 1, 3, 1, 3, 1, 1, 2]
最简单的方法(操作麻烦点)
1.按顺序写下70个数字1,20个数字2,10个数字3.
2.在旁边一列用rand函数生成100个随机数
3.使用排序,就可以得到打乱顺序,但比例符合要求的100个数字
我这里wps,直接的可用函数没有:
填充A1:A100,70个1,20个2,10个3;
填充B1:B100,=rand();ctrl+enter
排序B列,得到结果;
删除B列
Sub 批量随机数()
Range("A1:A70").Value = 1
Range("A70:A90").Value = 2
Range("A90:A100").Value = 3
Columns("A:A").Select
With Columns("B:B")
.Insert Shift:=-4159
.Select
End With
Range("B1").Select
Selection.Formula = "=RAND()"
Range("B1").Select
Selection.AutoFill Destination:=Range("B1:B100"), Type:=xlFillDefault
Range("B1:B100").Select
Range("B1").Select
With ActiveSheet.Sort
With .SortFields
.Clear
.Add Key:=Range("B2"), Order:=xlAscending
End With
.Header = xlGuess
.MatchCase = False
.SortMethod = xlPinYin
.Orientation = xlSortColumns
.SetRange Rng:=Range("A1:J100")
.Apply
End With
Columns("B:B").Select
Selection.Delete Shift:=xlShiftToLeft
End Sub
最好就是加一个辅助列,比如A1-A100设置成=rand(),
然后B1-B100提前填充好70个1、20个2和10个3,
然后把A列排序一下,这样B1-B100就全打乱了,
最后删除A列即可。
这样做的好处是,B1-B100随机分配了70个1、20个2和10个3,均匀的很,上面使用RANDBETWEEN的方法不能保证随机出来的就是70个1、20个2还是10个3
#读取数据
JOVIs = pd.read_csv(r'G:\数据恢复\2021工作\0325_野外实验设计\4_第二届数字地球大会\3_实验处理\9_出图V2\2_植被指数\Fieldfeature0416.csv')
# JOVIs = pd.read_csv(r'G:\数据恢复\2021工作\0325_野外实验设计\4_第二届数字地球大会\3_实验处理\9_出图V2\2_植被指数\feature0325.csv')