给定RAND5,写出RAND7

描述:给定能随机生成整数1到5的函数rand5(),写出能随机生成整数1到7的函数rand7()
这个题网上有很多各种各样的答案,但是感觉都不太科学。做为一个学统计的ds,用概率论
的方法来解决这个问题。
先假定给定的函数产生的是均匀分布,即 f(x=i)=1/5  , i=1,2,3,4,5。
假设随机变量x=rand5()*(rand5()-1)
则x的分布为
x   0       1        2        3        4        5        6        8        9        10        12        15        16     20
p  5/25  1/25  2/25   2/25  3/25   1/25  2/25   2/25 1/25   1/25     2/25    1/25     1/25  1/25
可以发现p=1/25的数有7个,其实只要有相同概率的数超过7个就行,记
                                       A={1,5,9,10,15,16,20}
                                       B={1,2,3,4,5,6,7}
做映射     f:A->B        
              f(Ai)=Bi
可以证明这样产生的随机数也是均匀分布的,用条件概率
               p(x=i|x in A)=p(x=i)/p(x=i,x in A)=(1/25)/(1/25)=1/7

则易知rand7()可以如下表示

int rand7() {
    while(1) {
        int x=rand5()*(rand5()-1);
        switch(x) {
            case 1: return 1;
            case 5: return 2;
            case 9: return 3;
            case 10:return 4;
            case 15:return 5;
            case 16:return 6;
            case 20:return 7;
        }
    }
}
基于提供的实习内容,我们可以使用Python来完成“实习二”的任务,即计算给定数据资料的简单相关系数和自相关系数。这里我提供一个简单的实现方案: 首先需要生成模拟数据来代替实际的数据表格,然后使用numpy库来进行相关系数的计算。 ```python import numpy as np # 生成模拟数据 np.random.seed(42) # 设置随机种子以便重复实验 yearly_temp = np.random.rand(10) * 10 - 5 # 假设年平均气温变化范围从-55摄氏度 winter_temp = np.random.rand(10) * 10 - 5 # 同样假设冬季平均气温的变化范围也是-55摄氏度 # 定义函数计算简单相关系数 def simple_correlation(x, y): return np.corrcoef(x, y)[0, 1] # 计算两个气温之间的简单相关系数 simple_corr = simple_correlation(yearly_temp, winter_temp) # 找出自相关系数绝对值最大的滞后时间长度 max_lag_yearly = None max_lag_winter = None max_corr_yearly = 0 max_corr_winter = 0 for lag in range(1, 11): # 最大滞后长度为10 corr_yearly = abs(simple_correlation(np.roll(yearly_temp, lag), yearly_temp)) corr_winter = abs(simple_correlation(np.roll(winter_temp, lag), winter_temp)) if corr_yearly > max_corr_yearly: max_corr_yearly = corr_yearly max_lag_yearly = lag if corr_winter > max_corr_winter: max_corr_winter = corr_winter max_lag_winter = lag print(f"Simple correlation between yearly and winter temperature: {simple_corr}") print(f"The maximum autocorrelation for yearly temperature occurs at a lag of {max_lag_yearly} with a value of {max_corr_yearly:.2f}.") print(f"The maximum autocorrelation for winter temperature occurs at a lag of {max_lag_winter} with a value of {max_corr_winter:.2f}.") ``` 请注意这个示例代码是用来演示如何编程解决这个问题的方法之一,实际应用时可能需要根据具体数据调整。另外,在正式环境中应该直接读取真实的数据文件而不是生成模拟数据。上述代码没有包括创建`X`和`Y`两个完全相同或相反的时间序列的部分,因为这部分相对直观,可以参照上面的逻辑自行添加。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值