随机数的转换和缩放的通用公式的使用

在《How to Program C 4th Edition》中,随机数的转换和缩放的通用公式是
n = a + rand() % b
其中a是转换值(它等于所期望连续整数范围中的第一个数),b是缩放因子(它等于所期望的连续整数范围的宽度)。
——《How to Program C 4th Edition》中文版第145页

今天做一道C随机数的练习题时遇到这么一道题,让我编写一个生成这么一个数组的语句。
2,4,6,8,10;
3,5,7,9,11;
6,10,14,18,22;
想了一想,我写出了以下代码:
Code
#include<stdio.h>
#include
<stdlib.h>

void produceRandom();

main()
{
    
int n;

    scanf( 
"%d"&n );

    
while ( n >= 0 )
    
{
        produceRandom();
        n
--;
    }


    
return 0;    
}


void produceRandom(){
    
int a, b, c;
    a 
= 2 + rand() % 5 * 2;
    b 
= 3 + rand() % 5 * 2;
    c 
= 6 + rand() % 5 * 4;
    printf( 
"%d\t%d\t%d\n", a, b, c );
}

通过这个练习,我认为这个通用的公式可以扩展一下,即
n = a + rand() % b * c
其中c是等差数列中的差值。当c=1时,数列为连续的,公式和书中给出的公式是一样的。因此我觉得这个公式更具有通用性。

转载于:https://www.cnblogs.com/iPeterRex/archive/2008/07/15/1243664.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值