阿里巴巴一道笔试题

2023-10-30

其实这是谷歌的一道面试题::给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数

惭愧,阿里的笔试题做错了,说实话,以前没见过,见过了就把搞懂

阿里题目:

给定rand_7()表示能生成1-7的随机数,使用四则运算和循环等控制语句,可以输出的有()

A.rand_3()   B.rand_21()    C.rand_23()   D.rand_47()

这个题目怎么做呢?我看了一道题目的答案,找到了一个规律,可以一般性的解决这个问题:

谷歌的那道面试题这样解决:

#include <stdio.h>
#include <time.h>
#include <stdlib.h>

int Rand_5()
{
    return rand()%5+1;
}
void main()
{
    srand((unsigned int)time(0));//srand放在循环之外起作用
    int n = 7;
    while(n--){
    int rand;
    do{ 
        rand = Rand_5()*5+Rand_5();
    }while(rand>12);
    printf("%d\t",(rand-5)/1);
    }   
    putchar('\n');
}

我们提炼一个一般性的规律,Rand_5()*5+Rand_5()是为了生成一系列连续的数,就是 int rand = Rand_n()*n+Rand() 

然后要求的是1-m的随机数,那么可以这样

do

{

       rand = Rand_n()*n+Rand() ;

}while(rand>n+m);

(rand-n)/1就是所要求的数,就这么简单,给定一个随机数的范围,去求另一个随机数的范围,阿里的那道题应该是都能选的,我做错了


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

阿里巴巴一道笔试题 的相关文章

随机推荐

  • chrome浏览器如何避免network报错:ERR_CERT_AUTHORITY_INVALID并添加为例外或继续前往

    版权声明 转载请注明作者 独孤尚良dugushangliang 出处 https blog csdn net dugushangliang article details 101421339 本文接续https blog csdn net
  • 事务故障、系统故障和介质故障的恢复

    数据库系统 故障与恢复 事务故障 系统故障和介质故障的恢复 1 事务故障的恢复 2 系统故障的恢复 3 介质故障的恢复 重装数据库 然后重做已完成的事务 1 事务故障的恢复 1 反向扫描日志文件 查找该事务的更新操作 2 对该事务的更新执行
  • hid自定义report 影响键盘_基于STM32CUBE的USB键盘例程.docx

    前面说了USB鼠标 这次趁热打铁 说一下USB键盘 依然只说如何修改 不说背后的原理 原因你懂的 涉及的知识点太多了 会不会写成USB三部曲 不知道 猜猜我下一步再写个啥 1 生成工程 首先 STM32CubeMX的配置部分不说了 和USB
  • (三)高德地图之自定义缩放及缩放动画效果

    这一节主要实现的功能是地图的自定义缩放及缩放的动画效果 还是直接放上代码更直观些 主要部位里面基本有注解 还是老样子 首先是新建activity zoom animate xml布局文件
  • Unity urp2d ShaderGraph 实现一个黑白转彩色的场景渐变效果 设计思路

    设计背景 2022网易MG比赛 策划案里关卡背景是一个信中被损坏的场景 主角要去修复这个场景的故事 然后原本的场景呈现黑白色的效果 但主角旁边画面是彩色的 关卡结局还要有镜头拉远 然后整个画面以主角为中心扩散恢复颜色的视觉效果 效果展示 项
  • 为什么说Python是普通人编程领域的王者

    点击上方 菜鸟学Python 选择 星标 公众号 超级无敌干货第一时间推给你 Python 自上个世纪诞生 一直过着不温不火的生活 直到近几年 乘着数据科学的东风 从低调的脚本小兵 成为了全能型的战士 同时也被被培训机构狠狠地炒火了一把 然
  • 稀疏数组

    稀疏数组 1 什么是稀疏数组 稀疏数组可以看做是普通数组的压缩 但是这里说的普通数组是值无效数据量远大于有效数据量的数组 下面蓝色的就是普通的二维数组转换成稀疏数组的形式 2 为什么要用稀疏数组 当二维数组中的很多值的默认值为0 因此也记录
  • iOS开发多线程-线程间的通信

    一 简单说明 线程间通信 在1个进程中 线程往往不是孤立存在的 多个线程之间需要经常进行通信 线程间通信的体现 1个线程传递数据给另1个线程 在1个线程中执行完特定任务后 转到另1个线程继续执行任务 线程间通信常用方法 void perfo
  • 05-----检测某个端口是否开放和查看服务器防火墙状态

    1 检测某个端口是否开放 nc vv 192 168 1 117 8890 结果 2 查看服务器防火墙状态 service firewalld status 或者使用下面的命令查看防火墙状态 主要看系统 systemctl status f
  • CCNP学习考试心得(转)

    CCNP学习考试心得 转 more 当计算机屏幕上显示 Congralation时 我不禁长出一口气 心中想 终于考完了 我所说的终于考完是指 我终于完成了ccnp的考试 四个月的学习 对于某些人来说可能太长了 但是要真正掌握ccnp的内容
  • C++学习系列之打印金字塔和倒金字塔

    实例要求 用符号 打印一个金字塔 用符号 打印一个倒金字塔 金字塔代码 include
  • VSCode中开发JavaWeb项目(Maven+Tomcat+热部署)

    1 安装插件 首先需要安装所用到的插件 分别用来支持Java 热部署和Tomcat服务器的插件 在插件市场中搜索Java 第一个就是Extension Pack for Java 内置了6个依赖插件 直接一键安装即可 然后是热部署插件 市场
  • python recvfrom设置超时_如何在python的socket recv方法上设置超时?

    我需要在python的socket recv方法上设置超时 怎么做 仅供参考 如果您选择使用超时 您需要知道如何处理超时 这个SO问题讨论了超时发生时的处理 stackoverflow com questions 16745409 典型的方
  • elementui实现横向时间轴_横向时间轴(进度条)

    1 2 3 4 5 6 7 8 9 10 timeline box 11 width 100 12 height 8rem 13 position relative 14 15 16 timeline container 17 height
  • 2023 年及未来最佳的软件构建工具

    当今世界 加快任务完成速度和尽可能减少人力投入是一切事物都需要关注的问题 软件开发也不例外 无论你在哪个领域 游戏 区块链 还是应用创建 软件开发的竞争都异常激烈 只要能够帮助到你 采用任何手段都无关紧要 而这也正是构建工具的作用 这些工具
  • Linux——I/O复用(2)—— poll和epoll

    poll原型 poll系统调用和select类似 也是在指定时间内轮询一定数量的文件描述符 以 测试其是否有就绪者 int poll struct pollfd fds int nfds int timeout fds struct pol
  • JAVA笔记--异常处理(第一篇)

    目录 一 异常概念 1 什么是异常 2 try与catch关键字 二 try catch finally 1 catch 2 异常处理过程分析 3 finally 三 throw throws与异常规则 1 throw throws 2 异
  • Unity3d 通过json文件使用C#脚本代码生成多个相机

    首先设计一个存储相机类型的json类如下 using UnityEngine using System using System Collections Serializable public class Cameras public in
  • matlab基本粒子群算法实现(四)

    最后在炼数成金那边找到了很好的一篇教程 在这里把它整理一下 做个粒子群算法的收尾 main m I 清空环境 clc clear II 绘制目标函数曲线 figure x y meshgrid 5 0 1 5 5 0 1 5 z x 2 y
  • 阿里巴巴一道笔试题

    其实这是谷歌的一道面试题 给定能随机生成整数1到5的函数 写出能随机生成整数1到7的函数 惭愧 阿里的笔试题做错了 说实话 以前没见过 见过了就把搞懂 阿里题目 给定rand 7 表示能生成1 7的随机数 使用四则运算和循环等控制语句 可以