You need to enable JavaScript to run this app.
最新活动
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

C - 给数组分配随机数导致代码卡死

在给数组分配随机数时导致代码卡死的问题,可能是因为随机数的生成过程中出现了无限循环的情况。为了解决这个问题,可以尝试以下方法:

  1. 使用一个循环来生成随机数,并在每次循环中检查随机数是否已经在数组中存在。如果存在,则继续生成下一个随机数,直到找到一个不存在于数组中的随机数为止。
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>

#define ARRAY_SIZE 10
#define MAX_RANDOM_NUM 100

int main() {
    int arr[ARRAY_SIZE] = {0};

    for (int i = 0; i < ARRAY_SIZE; i++) {
        int randomNum;
        bool isDuplicate;

        do {
            randomNum = rand() % MAX_RANDOM_NUM + 1;
            isDuplicate = false;

            for (int j = 0; j < i; j++) {
                if (arr[j] == randomNum) {
                    isDuplicate = true;
                    break;
                }
            }
        } while (isDuplicate);

        arr[i] = randomNum;
    }

    for (int i = 0; i < ARRAY_SIZE; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");

    return 0;
}
  1. 可以使用一个临时数组来存放所有可能的随机数,然后随机选择一个数加入到目标数组中,并从临时数组中删除该数,以避免重复。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define ARRAY_SIZE 10
#define MAX_RANDOM_NUM 100

int main() {
    int arr[ARRAY_SIZE] = {0};
    int tempArr[MAX_RANDOM_NUM] = {0};

    // 初始化临时数组
    for (int i = 0; i < MAX_RANDOM_NUM; i++) {
        tempArr[i] = i + 1;
    }

    // 随机选择数加入到目标数组中
    srand(time(NULL));
    for (int i = 0; i < ARRAY_SIZE; i++) {
        int randomIndex = rand() % MAX_RANDOM_NUM;
        arr[i] = tempArr[randomIndex];

        // 从临时数组中删除已经使用的数
        tempArr[randomIndex] = tempArr[MAX_RANDOM_NUM - 1];
        MAX_RANDOM_NUM--;
    }

    for (int i = 0; i < ARRAY_SIZE; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");

    return 0;
}

这两种方法都可以避免生成重复的随机数,从而解决代码卡死的问题。

本文内容通过AI工具匹配关键字智能整合而成,仅供参考,火山引擎不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系service@volcengine.com进行反馈,火山引擎收到您的反馈后将及时答复和处理。
展开更多
面向开发者的云福利中心,ECS 60元/年,域名1元起,助力开发者快速在云上构建可靠应用

社区干货

万字长文带你漫游数据结构世界|社区征文

测试代码如下:```javapublic class Test { public static void main(String[] args) { MyList myList = new MyList(); myList.add(1); myList.add(2); // 1->2 my... [](https://markdownpicture.oss-cn-qingdao.aliyuncs.com/blog/20211228083751.png)栈的底层用什么实现的?其实可以用链表,也可以用数组,但是`JDK`底层的栈,是用数组实现的,封装之后,通过`API`操作的永远都只能是...

万字长文,Spark 架构原理和 RDD 算子详解一网打进! | 社区征文

默认值就是程序所分配到的CPU Core的数目。(2)一个计算每个分区的函数。Spark中RDD的计算是以分片为单位的,每个RDD都会实现compute函数以达到这个目的。compute函数会对迭代器进行复合,不需要保存每次计算的结果... func的函数类型必须是(Int, Interator[T]) => Iterator[U]| sample(withReplacement, fraction, seed) | 根据fraction指定的比例对数据进行采样,可以选择是否使用随机数进行替换,seed用于指定随机数生成器种子...

适用于线上内存监控框架KOOM源码分析 | 社区征文

有时甚至会卡死,但放在应用程序中,3-4s的时间可能直接导致ANR,因为整个过程应用程序是无响应的,所以Leakcanary只适合在线下测试环境中分析内存问题,不适合带着上线。# 2 KOOM原理分析那么既然Leakcanary不能带... 这个数组其实是一些OOMTracker的实现类,就是这里大家需要思考一个问题,什么情况下会发生OOM?这里我总结一下主要可能发生OOM的场景:(1)**堆内存溢出**;这个是典型的OOM场景;\(2)**没有连续的内存空间分配**;这个...

聊聊得物数据研发优化策略

而这两点大多跟rand()随机数有一定的关系,通过数据分发和打散和规避掉大部分此场景下的问题。数据重分发一般代码操作如下所示```select c1,c2... from tablename distribute by c1[,...]select c1,c2... fro... 随机函数多与pmod()、mod()、floor()、ceil() 等函数结合使用,可以根据不同的业务场景,来构造任意范围内的随机整数,比如在处理数据重分发解决数据倾斜的问题时,同时担心影响这种重分发带来过多的小文件,随机数可以...

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

C - 给数组分配随机数导致代码卡死-优选内容

万字长文带你漫游数据结构世界|社区征文
测试代码如下:```javapublic class Test { public static void main(String[] args) { MyList myList = new MyList(); myList.add(1); myList.add(2); // 1->2 my... [](https://markdownpicture.oss-cn-qingdao.aliyuncs.com/blog/20211228083751.png)栈的底层用什么实现的?其实可以用链表,也可以用数组,但是`JDK`底层的栈,是用数组实现的,封装之后,通过`API`操作的永远都只能是...
万字长文,Spark 架构原理和 RDD 算子详解一网打进! | 社区征文
默认值就是程序所分配到的CPU Core的数目。(2)一个计算每个分区的函数。Spark中RDD的计算是以分片为单位的,每个RDD都会实现compute函数以达到这个目的。compute函数会对迭代器进行复合,不需要保存每次计算的结果... func的函数类型必须是(Int, Interator[T]) => Iterator[U]| sample(withReplacement, fraction, seed) | 根据fraction指定的比例对数据进行采样,可以选择是否使用随机数进行替换,seed用于指定随机数生成器种子...
适用于线上内存监控框架KOOM源码分析 | 社区征文
有时甚至会卡死,但放在应用程序中,3-4s的时间可能直接导致ANR,因为整个过程应用程序是无响应的,所以Leakcanary只适合在线下测试环境中分析内存问题,不适合带着上线。# 2 KOOM原理分析那么既然Leakcanary不能带... 这个数组其实是一些OOMTracker的实现类,就是这里大家需要思考一个问题,什么情况下会发生OOM?这里我总结一下主要可能发生OOM的场景:(1)**堆内存溢出**;这个是典型的OOM场景;\(2)**没有连续的内存空间分配**;这个...
聊聊得物数据研发优化策略
而这两点大多跟rand()随机数有一定的关系,通过数据分发和打散和规避掉大部分此场景下的问题。数据重分发一般代码操作如下所示```select c1,c2... from tablename distribute by c1[,...]select c1,c2... fro... 随机函数多与pmod()、mod()、floor()、ceil() 等函数结合使用,可以根据不同的业务场景,来构造任意范围内的随机整数,比如在处理数据重分发解决数据倾斜的问题时,同时担心影响这种重分发带来过多的小文件,随机数可以...

C - 给数组分配随机数导致代码卡死-相关内容

函数概览

CHECKSUM 函数 CHECKSUM(KEY) 计算一组值的校验和。 COUNT 函数 COUNT(*) 计算一组值的总数量。 COUNT(1) 计算一组值的数量,等同于 COUNT(*)。 COUNT(KEY) 计算一组值中不为 NULL 的值的数量。 COUNT_... RAND 函数 RAND() 返回一个随机数。 RANDOM 函数 RANDOM() 返回 [0,1) 之间的随机数。 RANDOM(0, KEY) 返回 [0,KEY) 之间的随机数。 ROUND 函数 ROUND(KEY) 对目标值进行四舍五入取整数。 ROUND(KEY,...

开始云端录制 StartRecord

就会导致画面变形值不合法时,自动调整为默认值。目前 0 和 3 均为按照指定的宽高直接缩放,但我们推荐你使用 3 以便与客户端实现相同逻辑。不同渲染模式下,效果如下:SourceCropObject否源流剪切功能,可以在源视频帧... 录制文件的名称由 [StorageConfig.Type] 和 [FileNameConfig] 共同决定。当StorageConfig.Type配置为 0 ,即存储在 TOS 平台时,录制文件名称由FilenameConfig.Prefix + FilenameConfig.Pattern +随机数组成当Storag...

内置函数

数学函数 RAND 返回随机数。 数学函数 ROUND 返回四舍五入到指定小数点位置的值。 数学函数 SIN 计算正弦值。 数学函数 SINH 计算双曲正弦值。 数学函数 SQRT 计算平方根。 数学函数 TAN 计算正切值。 数学函数 TANH 计算双曲正切值。 数学函数 TRUNC 返回截取到指定小数点位置的值。 数学函数 BIN 计算二进制代码值。 数学函数 CBRT 计算立方根值。 数学函数 CORR 计算皮尔逊系数。 数学函数 DEGREES 将弧度转换为角度。 数学函...

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

开始云端录制 StartRecord

就会导致画面变形1 表示按照显示区域的长宽比裁减视频,然后等比拉伸或缩小视频,占满显示区域。2 表示按照原始画面的宽高比缩放视频,在显示区域居中显示。如果原始画面宽高比与指定的宽高比不同,就会导致画面有空缺... 录制文件的名称由 [StorageConfig.Type] 和 [FileNameConfig] 共同决定。当StorageConfig.Type配置为 0 ,即存储在 TOS 平台时,录制文件名称由FilenameConfig.Prefix + FilenameConfig.Pattern +随机数组成当Storag...

Quantile

quantile 计算数字序列的近似分位数。此函数应用 reservoir sampling,使用高达8192的水塘大小和随机数发生器采样。结果是不确定的。要获得精确的分位数,使用 quantileExact 函数。当在一个查询中使用多个不同层次的... {quantileexact} 准确计算数字序列的分位数。 为了准确计算,所有输入的数据被合并为一个数组,并且部分的排序。因此该函数需要 O(n) 的内存,n为输入数据的个数。但是对于少量数据来说,该函数还是非常有效的。 当在一...

概述

CIMAL 最大精度为76; Data Date16涵盖1970 - 2149,Date32涵盖1900-2299; TIME. ByteHouse支持3-9位精度; TIMESTAMP.使用数字类型并在内部转换为日期时间。 暂时不完全支持的类型包括: Array Map Json 函数 Functi... max()可能会受到这个影响导致结果不一致。可以在建表时加上Nullable()来规避此问题。 localtime() 结果比MySQL上少了年月日 str_to_date() 格式化参数和传入时间没有对齐的话,返回值有区别str_to_date('2022-0...

Lua 脚本使用指南

语法 lua EVAL script numkeys [key [key ...]] [arg [arg ...]]参数具体说明如下表。 参数 说明 script Lua 脚本的源代码。Redis 支持通过 KEYS[] 和 ARGV[] 参数向脚本中传递数据,其中: KEYS[]:指定 Redis Ke... 因为过多类似行为会导致实例内存使用量上升且无法及时回收,极端情况下会导致实例主库与备库内存溢出(Out of Memory),造成数据丢失。 示例 示例 1:通过 EVAL 命令执行如下 Lua 脚本,用于设置 Key=department,valu...

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

产品体验

体验中心

云服务器特惠

云服务器
云服务器ECS新人特惠
立即抢购

白皮书

一图详解大模型
浓缩大模型架构,厘清生产和应用链路关系
立即获取

最新活动

爆款1核2G共享型服务器

首年60元,每月仅需5元,限量秒杀
立即抢购

火山引擎增长体验专区

丰富能力激励企业快速增长
查看详情

数据智能VeDI

易用的高性能大数据产品家族
了解详情

一键开启云上增长新空间

立即咨询