python- rand、randn和randi的区别

本文详细介绍了MATLAB中几种常见的随机数生成方法,包括rand、randn等函数的使用及参数说明,涵盖了均匀分布和标准正态分布的伪随机数生成方式。
  1. rand 生成均匀分布的伪随机数。分布在(0~1)之间
  2. randn 生成标准正态分布的伪随机数(均值为0,方差为1)
    上面两个的主要语法是:rand(m,n)生成m行n列的均匀分布的伪随机数
    rand(m,n,’double’)生成指定精度的均匀分布的伪随机数,参数还可以是’single’
    rand(RandStream,m,n)利用指定的RandStream(我理解为随机种子)生成伪随机数
  3. randi 生成均匀分布的伪随机整数
    主要语法:randi(iMax)在开区间(0,iMax)生成均匀分布的伪随机整数
    randi(iMax,m,n)在闭区间[1,iMax]生成mXn型随机矩阵
    r = randi([iMin,iMax],m,n)在闭区间[iMin,iMax]生成mXn型随机矩阵
clear; clc; close all; set(0,'DefaultAxesFontName','SimHei'); set(0,'DefaultTextFontName','SimHei'); vital_signs = {'sbp7','dbp7','petco7','RR7','spO27','HR7','IPI7','moaas7'}; factors = {'性别','年龄','有无手术史','有无既往史','是否酗酒',... '是否吸烟','有无PONV','有无晕动史','药物剂量','药物种类'}; n = 200; actual_group = randi([0,1],n,1); predicted_group = round(actual_group + 0.15*randn(n,1)); predicted_group(predicted_group<0) = 0; predicted_group(predicted_group>1) = 1; influence = rand(length(factors),length(vital_signs)); influence(end,1:7) = influence(end,1:7) + 0.3; influence(influence>1) = 1; figure('Position',[100,100,1000,600]); for i = 1:8 subplot(2,4,i); vital_data = 50 + 30*randn(n,1) + 10*actual_group; boxplot(vital_data, [actual_group, predicted_group], ... 'Labels', {'实际组','预测组'}, 'Notch', 'on'); title(vital_signs{i}); ylabel('指标值'); grid on; end sgtitle('8项生命体征在实际组与预测组的分布对比(随机森林模型)'); figure('Position',[200,200,900,600]); heatmap(influence, ... 'XDisplayLabels',vital_signs, ... 'YDisplayLabels',factors, ... 'Title','变量对生命体征指标的影响程度(预测模型输出)'); colormap(flip(hot(256))); xlabel('生命体征指标'); ylabel('影响因素'); gca.XLabelRotation = 45; figure('Position',[300,300,800,500]); subplot(1,2,1); acc = mean(predicted_group==actual_group); bar([acc,1-acc], 'FaceColor',[0.9,0.7,0.7]); xticklabels({'准确率','错误率'}); ylabel('比例'); title(['模型预测准确率:',num2str(acc*100,'%.1f'),'%']); grid on; subplot(1,2,2); error = predicted_group - actual_group; histogram(error, 'BinEdges',-1.5:0.5:1.5, 'FaceColor',[0.9,0.7,0.7]); xlabel('预测误差(1=错判为R药,-1=错判为B药)'); ylabel('样本数'); title('预测误差分布'); grid on; 帮我把注释去掉
07-10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值