使用rand函数生成随机数来发红包

2023-11-17

#include <iostream>
#include <ctime>
#include <cstdlib>
#include <iomanip>
#include <math.h>

using namespace std;

int main()
{
    int i, number;
    int best;//手气最佳
    float total;

    cout << "请输入红包金额:";
    cin >> total;
    cout << "请输入抢红包人数:";
    cin >> number;
    /* 生成随机数 */
    // 设置种子
    srand((unsigned)time(NULL));
    float a[1024];//保存每个人的随机数。最多支持1024个人抢红包。
    float b[1024];//保存每个人获得的红包金额。
    float suma = 0;//随机数总和。
    float sumb = 0;//红包总和。
    int max = 0;
    for (i = 0; i < number; i++)
    {
        // 生成实际的随机数
        a[i] = rand() % 100;
                
        if (a[i] > max){
            max = a[i];
            best = i;//获取手气最佳
        }
        suma += a[i];
    }

    for (i = 0; i < number - 1; i++)
    {
        b[i] = a[i] / suma * total;//按照随机数计算每个人实际获得的金额
        sumb += round(b[i] * 100) / 100.0;//将红包金额保留两位小数
        //输出信息
        cout << "第" << setiosflags(ios::right)<< setw(3) << i + 1 << 
            "个人的红包是:" << setiosflags(ios::right) << setw(6) << 
            setiosflags(ios::fixed) << setprecision(2) << 
            round(b[i] * 100) / 100.0 ;
        if (best == i){
            cout << "(手气最佳)" << endl;
        }
        else {
            
            cout << endl;
        }
    }
    //最后一人的红包金额等于总金额减去前面的金额。
    cout << "第" << setiosflags(ios::right)<<
        setw(3) << number << "个人的红包是:" <<
        setiosflags(ios::right) << setw(6) << setiosflags(ios::fixed) <<
        setprecision(2) << round((total - sumb) * 100) / 100.0;
    if (best == number - 1){
        cout << "(手气最佳)" << endl;
    }
    else {

        cout << endl;
    }
    return 0;
}

在许多情况下,需要生成随机数。关于随机数生成器,有两个相关的函数。一个是 rand(),该函数只返回一个伪随机数。生成随机数之前必须先调用 srand() 函数。

它需要提供一个种子,这个种子会对应一个随机数,如果使用相同的种子后面的rand()函数会出现一样的随机数。如: srand(1); 直接使用 1 来初始化种子。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用rand函数生成随机数来发红包 的相关文章

随机推荐

  • 睿智的seq2seq模型1——利用seq2seq模型对数字进行排列

    睿智的seq2seq模型1 利用seq2seq模型对数字进行排列 学习前言 seq2seq简要介绍 利用seq2seq实现数组排序 实现方式 一 对输入格式输出格式进行定义 二 建立神经网络 1 神经网络的输入 2 语义编码c的处理 3 输
  • 【English】十大词性之感叹词(感叹句)

    感叹词 文章目录 感叹词 前言 一 十大高频感叹词 1 1 Oh 表示惊讶 指责 痛苦 称赞 懊恼等 可译为 哦 哎呀 噢 啊 呀 等 1 2 Ah 表示惊奇 高兴 讨厌 懊悔 藐视 威胁等 可译为 呀 啊 等 1 3 come 表示鼓励
  • 海量数据分类 liblinear使用总结

    liblinear使用总结 liblinear是libsvm的线性核的改进版本 专门适用于百万数据量的分类 正好适用于我这次数据挖掘的实验 liblinear用法和libsvm很相似 我是用的是 exe文件 利用python的subproc
  • Oracle安装详细教程

    一 安装教程 安装教程1 安装教程2 假设安装时弹出 microsoft net framework 3 5 提示你需要安装这个 你可以选择直接忽视 关掉弹窗 等待数据库复制 安装时 综合看两个教程 基本满足安装需求 二 安装测试 1 在电
  • Mac os Ventura 关闭 accent方言,长按不能连续输入问题

    Mac os Ventura 关闭 accent方言 长按不能连续输入问题 在之前的osx版本遇到长按开启方言输入 无法连续输入问题时 defaults write g ApplePressAndHoldEnabled bool false
  • Python逻辑判断顺序

    Python逻辑判断是有顺序的 如 while l1 is not None and l2 is not None and l1 val lt l2 val node1 next l1 node1 node1 next l1 l1 next
  • 从零开始,教你如何开发一款自己的 IDEA 插件!

    程序员的成长之路 互联网 程序员 技术 资料共享 关注 阅读本文大概需要 4 分钟 来自 blog csdn net smile 795 article details 125470136 idea插件介绍 作为一枚程序员 平时最常用的id
  • cdn服务器pnk_cdn服务器是什么

    对于cdn我们不陌生 你听过cdn服务器吗 CDN服务器是建立在网络上的内容分发网络 依托布置在各地的边缘服务器 用户可以经过中央渠道的负载平衡 内容分发 调度等功用模块获取附近所需的内容 然后减少网络拥塞 进步用户拜访响应速度和命中率 为
  • 数据结构与算法——线性表的顺序储存结构

    目录 前言 一 顺序储存的定义及储存方式 二 地址计算方法 三 顺序存储结构的插入和删除 3 1 获得元素操作 3 2 插入操作 3 3 删除操作 四 分析插入和删除操作的时间复杂度 五 线性表顺序存储结构的优缺点 前言 在介绍线性表的顺序
  • Windows安装程序遇到错误:0x80240037

    在安装微软的程序时遇到此错误 本例以安装PB的帮助文档为例 解决办法是 第一步 更改安装文件后缀 第二步 Win R执行 第一步 将msu后缀更改为cab 更改后变为 然后将其解压到一个新文件夹 比如cab 解压后的内容为 第二步 WIN
  • Linux与Windows下CMake的安装与编译

    一 背景介绍 CMake 这个名字是 Cross platform Make 的缩写 虽然名字中含有 make 但是CMake和Unix上常见的 make 系统是分开的 而且更为高端 它可与原生建置环境结合使用 例如 make 苹果的Xco
  • GPS开发常用方法 和用Criteria确定android location providerGPS开发常用方法

    GPS常用方法总结 取得LocationProvider Java代码 public void getLocationProvider try Criteria mCriteria01 new Criteria mCriteria01 se
  • 利用Visual Studio程序写出循环结构求1+3+5+....+100的值

    下面是在 Visual Studio 中使用 C 编写循环结构求 1 3 5 100 的值的示例代码 int sum 0 for int i 1 i lt 100 i 2 sum i Console WriteLine sum 上面的代码使
  • Excel里怎么冻结某一行某一列

    企业内部日常运营中 需要不断的处理数据来为决策做支撑 但是如果数据大的话 会发现看不到表头那边 不知道这些数据属于哪个地方 下面小编就告诉大家如何在Excel里来冻结窗口固定表头 以下就是Excel里冻结首行首列已经冻结多个窗口的方法 Ex
  • 《程序员的自我修养——链接、装载与库》

    先不说别的 就单看书名就知道是什么意思了 作者的意思是想 演员的自我修养 的作者 斯坦尼斯拉夫斯基 致敬 老斯的那本书我没看过 但我看这本书的意思就是培养程序员的基本素质 你说啥叫基本素质 那就是你能够了解你编写的程序的任何一个运行的细节
  • c++可变参数完美转发

    c 语法真的怪异 看线程源码的时候看到一段 template
  • 基于51单片机可控电压0-5V输出PWM方式PID稳压

    视频地址链接 https www bilibili com video BV17V411n72P 本设计为AT89C51为主控芯片 主要是实现了PWM方式输出可调电压0 5V输出 使用PID方式稳压
  • c51单片机中断详解--适合初学者

    代码文本在文末 文中为代码截图 工程图 第一题 每次亮一个灯的流水灯 定义P1为led1 外部中断0允许中断 EX0 1 下降沿触发 IT0 1 总开关 EA 1 中断要执行的是P0引脚的4个二极管闪六次 其实这里还有个想说的是 IE在中断
  • spring yml 配置事务_spring boot详解, 配置文件加载顺序, spring事务管理, spring定时任务...

    spring boot 简介 spring boot是为了简化spring的开发 不需要进行大量的配置 是由pivotal公司提供的全新框架 为什么使用spring boot 独立运行 简化配置 自动配置 无需xml配置 spring bo
  • 使用rand函数生成随机数来发红包

    include