进度条,随机数---demo笔记【原创】
本人学习笔记,参考网上代码完成
makefile
TEST_OBJ := rng_app
MAKEOPT := ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- ARM_LINUX_KERNEL := /home/zhangbh//hjf_5830x_7_24/firmware/build_dir/linux-brcm5830_sxxx-prolin2/linux-3.6. PWD = $(shell pwd) all:
arm-none-linux-gnueabi-gcc -o $(TEST_OBJ) $(TEST_OBJ).c .PHONY: clean clean:
rm -rf .*.cmd *.o *.mod.c *.ko .tmp_versions Module.symvers .Makefile.swp modules.order $(TEST_OBJ)
rng_app.c
#include <stdio.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>
#include <unistd.h>
#include <assert.h>
#include <string.h>
#include <stdlib.h> #define RANDOM_NAME "hw_random" int random_fd; typedef struct {
char chr; /*tip char*/
char *title; /*tip string*/
int style; /*progress style*/
int max; /*maximum value*/
float offset;
char *pro;
} progress_t; #define PROGRESS_NUM_STYLE 0
#define PROGRESS_CHR_STYLE 1
#define PROGRESS_BGC_STYLE 2 void progress_init(progress_t *, char *, int, int);
void progress_show(progress_t *, int);
void progress_destroy(progress_t *);
int random_num(int min, int max);
void displayProgress(int progress); FILE *fp = NULL;
int main(int argc, char **argv)
{ long long rand_num = ;
long long max_random = ;
int i, j;
long long random_size = ;
int count = ;
long long check_cnt = ;
long long a[];
long long check_size = ;
long long b[];
unsigned cnt = ;
unsigned flag_b = ;
unsigned char *file_name = "./t.txt"; progress_t bar;
//progress_init(&bar, "", 50, PROGRESS_NUM_STYLE);
progress_init(&bar, "", , PROGRESS_CHR_STYLE);
//progress_init(&bar, "", 50, PROGRESS_BGC_STYLE); random_fd = open("/dev/hw_random", O_RDONLY);
if (random_fd < ) {
printf("open file %s failed!\r\n", RANDOM_NAME);
return -;
} printf("sizeof(long int)=%d\r\n", sizeof(long int));
printf("sizeof(long)=%d\r\n", sizeof(long));
printf("sizeof(long long)=%d\r\n", sizeof(long long)); max_random = atoi(argv[]);
check_size = atoi(argv[]); fp = fopen(file_name, "a");
if (!fp) {
perror("fopen");
progress_destroy(&bar);
} //rand_num = random_num(0, 10000);
check_cnt = ;
while (check_cnt < check_size) { for (j=; j<random_size; j++) { a[j] = random_num(, max_random); for (i=; i<j; i++) {
if (a[i] == a[j]) {
b[cnt] = a[i];
cnt++;
count++;
// printf("a[%d]=%d\r\n", j, a[j]);
// printf("a[%d]=%d\r\n", i, a[i]);
}
if (b[] == a[j]) {
flag_b++;
}
}
}
check_cnt++;
if ((check_cnt*)%check_size == ) {
// printf("===============>%d%% \b\n", (check_cnt*100)/check_size);
// displayProgress((check_cnt*100)/check_size);
progress_show(&bar, (check_cnt*)/check_size/1.0f);
} }
printf("\n+-Done\n");
printf("\n");
// printf("a[50]=%d\r\n", a[50]);
printf("count = %d\r\n", count);
printf("check_cnt = %d\r\n", check_cnt);
printf("flag_b = %d\r\n", flag_b); for (i=; i<; i++) {
printf("b[%d]=%ld\r\n", i, b[i]);
}
#if 0
int i;
for ( i = ; i <= ; i++ ) {
progress_show(&bar, i/50.0f);
sleep();
}
printf("\n+-Done\n");
#endif
progress_destroy(&bar); return ;
}
#if 0
int write_to_file(unsigned long data, int tmp)
{
fprintf(fp, "%ld\n%d\n", msg->user_name, msg->user_data);
fflush(fp);
return ;
}
#endif
int random_num(int min, int max)
{
//static int random_fd;
unsigned long int random_value = ;
int bytes_to_read;
char *next_random_byte;
int ret; assert(max > min); next_random_byte = (char *)&random_value;
bytes_to_read = sizeof(random_value);
/* 因为是从/dev/random中读取,read可能会被阻塞,一次读取可能只能得到一个字节,
* 循环是为了让我们读取足够的字节数来填充random_value.
*/
do {
ret = read(random_fd, next_random_byte, bytes_to_read);
bytes_to_read -= ret;
next_random_byte += ret;
} while (bytes_to_read > ); return min + (random_value%(max - min + ));
} void displayProgress(int progress)
{
int k = ;
for (k=; k<; k++)
putchar('\b');//将当前行全部清空,用以显示最新的进度条状态
int j = ;
for (j=; j<progress; j++)
putchar('+');//打印进度条上已经完成的部分,用‘+’表示
for (j=; j<=-progress; j++)
putchar('-');//打印进度条上还有多少没有完成的
fprintf(stdout, " %3d%%",progress);
fflush(stdout);
} void progress_init(
progress_t *bar, char *title, int max, int style)
{
bar->chr = '#';
bar->title = title;
bar->style = style;
bar->max = max;
bar->offset = / (float)max;
bar->pro = (char *) malloc(max+);
if ( style == PROGRESS_BGC_STYLE )
memset(bar->pro, 0x00, max+);
else {
memset(bar->pro, , max);
memset(bar->pro+max, 0x00, );
}
} void progress_show( progress_t *bar, int bit )
{
// int val = (int)(bit * bar->max);
int val = bit;
switch ( bar->style )
{
case PROGRESS_NUM_STYLE:
printf("\033[?25l\033[31m\033[1m%s%d%%\033[?25h\033[0m\r",
bar->title, (int)(bar->offset * val));
fflush(stdout);
break; case PROGRESS_CHR_STYLE:
memset(bar->pro, '#', val);
// printf("\033[?25l\033[31m\033[1m%s[%-s] %d%%\033[?25h\033[0m\r",
// bar->title, bar->pro, (int)(bar->offset * val));
printf("\033[?25l\033[31m\033[1m%s[%-s] %d%%\033[?25h\033[0m\r",
bar->title, bar->pro, val);
fflush(stdout);
break; case PROGRESS_BGC_STYLE:
memset(bar->pro, , val);
printf("\033[?25l\033[31m\033[1m%s\033[41m %d%% %s\033[?25h\033[0m\r",
bar->title, (int)(bar->offset * val), bar->pro);
fflush(stdout);
break;
}
} //destroy the the progress bar.
void progress_destroy(progress_t *bar)
{
free(bar->pro);
}
test.c
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h> #define RESETCOLOR "\033[0m"
#define GREEN "\033[0;32m"
#define RED "\033[0;31m"
#define LIGHT_RED "\033[1;31m"
#define YELLOW "\033[1;33m"
#define BLUE "\033[0;34m"
#define LIGHT_BLUE "\033[1;34m"
#define CYAN "\033[0;36m"
#define PURPLE "\033[0;35m"
#define LIGHT_PURPLE "\033[1;35m"
#define BROWN "\033[0;33m"
#define WHITE "\033[1;37m"
#define LIGHT_GRAY "\033[0;37m"
#define DARY_GRAY "\033[1;30m" typedef struct {
char chr; /*tip char*/
char *title; /*tip string*/
int style; /*progress style*/
int max; /*maximum value*/
float offset;
char *pro;
} progress_t; #define PROGRESS_NUM_STYLE 0
#define PROGRESS_CHR_STYLE 1
#define PROGRESS_BGC_STYLE 2 void progress_init(progress_t *, char *, int, int);
void progress_show(progress_t *, float);
void progress_destroy(progress_t *); int main(int argc, char *argv[] )
{
progress_t bar;
// progress_init(&bar, "", 10, PROGRESS_NUM_STYLE);
progress_init(&bar, "", , PROGRESS_CHR_STYLE);
// progress_init(&bar, "", 100, PROGRESS_BGC_STYLE); int i;
for ( i = ; i <= ; i++ ) {
progress_show(&bar, i/100.0f);
usleep(*);
}
printf("\n+-Done\n"); printf("\033c"); printf(YELLOW"D"GREEN"e"RED"n"LIGHT_RED"g"YELLOW" x"BLUE"i"LIGHT_BLUE"a"CYAN"o w"PURPLE"u h"LIGHT_PURPLE"ap"BROWN"py "LIGHT_GRAY"bir"DARY_GRAY"thday!!!"RESETCOLOR"\r\n");
printf(YELLOW"D"GREEN"e"RED"n"LIGHT_RED"g"YELLOW" x"BLUE"i"LIGHT_BLUE"a"CYAN"o w"PURPLE"u h"LIGHT_PURPLE"ap"BROWN"py "LIGHT_GRAY"bir"DARY_GRAY"thday!!!"RESETCOLOR"\r\n");
sleep();
printf(YELLOW"D"GREEN"e"RED"n"LIGHT_RED"g"YELLOW" x"BLUE"i"LIGHT_BLUE"a"CYAN"o w"PURPLE"u h"LIGHT_PURPLE"ap"BROWN"py "LIGHT_GRAY"bir"DARY_GRAY"thday!!!"RESETCOLOR"\r\n");
printf(YELLOW"D"GREEN"e"RED"n"LIGHT_RED"g"YELLOW" x"BLUE"i"LIGHT_BLUE"a"CYAN"o w"PURPLE"u h"LIGHT_PURPLE"ap"BROWN"py "LIGHT_GRAY"bir"DARY_GRAY"thday!!!"RESETCOLOR"\r\n");
printf(YELLOW"D"GREEN"e"RED"n"LIGHT_RED"g"YELLOW" x"BLUE"i"LIGHT_BLUE"a"CYAN"o w"PURPLE"u h"LIGHT_PURPLE"ap"BROWN"py "LIGHT_GRAY"bir"DARY_GRAY"thday!!!"RESETCOLOR"\r\n"); progress_destroy(&bar); return ;
} /**
* initialize the progress bar.
* @max = 0
* @val = 0
*
* @param style
* @param tip words.
*/
void progress_init(
progress_t *bar, char *title, int max, int style)
{
bar->chr = '#';
bar->title = title;
bar->style = style;
bar->max = max;
bar->offset = / (float)max;
bar->pro = (char *) malloc(max+);
if ( style == PROGRESS_BGC_STYLE )
memset(bar->pro, 0x00, max+);
else {
memset(bar->pro, , max);
memset(bar->pro+max, 0x00, );
}
} void progress_show( progress_t *bar, float bit )
{
int val = (int)(bit * bar->max); switch ( bar->style )
{
case PROGRESS_NUM_STYLE:
printf("\033[?25l\033[31m\033[1m%s%d%%\033[?25h\033[0m\r",
bar->title, (int)(bar->offset * val));
fflush(stdout);
break; case PROGRESS_CHR_STYLE:
memset(bar->pro, '#', val);
printf("\033[?25l\033[31m\033[1m%s[%-s] %d%%\033[?25h\033[0m\r",
bar->title, bar->pro, (int)(bar->offset * val));
fflush(stdout);
break; case PROGRESS_BGC_STYLE:
memset(bar->pro, , val);
printf("\033[?25l\033[31m\033[1m%s\033[41m %d%% %s\033[?25h\033[0m\r",
bar->title, (int)(bar->offset * val), bar->pro);
fflush(stdout);
break;
}
} //destroy the the progress bar.
void progress_destroy(progress_t *bar)
{
free(bar->pro);
}
xipai.c
#include <stdio.h>
#include <time.h>
#include <ctype.h>
#include <stdlib.h> #define CARDSNUM 10 /* 牌数 */
#define NUMXIPAI 1 /* 洗牌次数 */
#define TONGJINUM 10000000 /* 统计次数 */
#define CARDS cards /* 扑克数组 */
#define TONGJI tongji
/* 统计数组 */
#define CARDS_F int CARDS[CARDSNUM]
/* 扑克数组定义及函数参数 */
#define TONGJI_F long int TONGJI[CARDSNUM][CARDSNUM]
/* 统计数组定义及函数参数 */ /* 洗牌函数声明 */
void InitCards(CARDS_F);
void ShuffleArray_Fisher_Yates(CARDS_F);
void PrintCards(CARDS_F);
void Puke(CARDS_F); /* 统计函数声明 */
void InitTongji(TONGJI_F);
void Tongjisum(CARDS_F, TONGJI_F);
void PrintTongji(TONGJI_F);
void Tongji(CARDS_F, TONGJI_F); int main(void)
{
time_t t;
CARDS_F;
TONGJI_F; srand(time(&t)); // Puke(CARDS);
// PrintCards(CARDS); Tongji(CARDS, TONGJI);
PrintTongji(TONGJI); return ;
} void InitCards(CARDS_F) /*码牌 扑克数组初始化 */
{
int i;
for(i = ; i< CARDSNUM; i++)
{
CARDS[i] = i+;
}
} void ShuffleArray_Fisher_Yates(CARDS_F) /* Fisher_Yates算法 */
{
int i, j, k; for(i = CARDSNUM; i> ; i--)
{ j = (rand()%(i));
k = CARDS[i-];
CARDS[i-] = CARDS[j];
CARDS[j] = k;
}
} void PrintCards(CARDS_F) /* 输出牌 */
{
int j; printf("\nYour Cards Is: ");
for(j = ; j < CARDSNUM; j++)
{
if(!(j%))
{
printf("\n");
}
printf("%d ", CARDS[j]);
}
} void Puke(CARDS_F) /* 洗牌 */
{
int i; InitCards(CARDS); for(i = ; i<= NUMXIPAI; i++)
{
ShuffleArray_Fisher_Yates(CARDS);
} } void InitTongji(TONGJI_F) /* 统计数组初始化 */
{
int j, k; for(j = ; j < CARDSNUM; j++)
{
for(k = ; k < CARDSNUM; k++)
{
TONGJI[j][k] = ;
}
}
} void Tongjisum(CARDS_F, TONGJI_F) /* 统计扑克牌的出现位置 */
{
int j, k; Puke(CARDS); for(j = ; j < CARDSNUM; j++)
{
k = CARDS[j];
TONGJI[j][k-] += ;
}
} void PrintTongji(TONGJI_F) /* 输出统计结果 */
{
int i, j; printf("\nTongji Result Is: \n");
for(i = ; i< CARDSNUM; i++)
{
for(j = ; j < CARDSNUM; j++)
{
printf("%ld ", TONGJI[i][j]);
}
printf("\n");
}
} void Tongji(CARDS_F, TONGJI_F) /* 扑克牌的概率统计 */
{
long int i; InitTongji(TONGJI); for(i = ; i< TONGJINUM; i++)
{
Tongjisum(CARDS, TONGJI);
}
}
进度条,随机数---demo笔记【原创】的更多相关文章
- sys模块进度条玩法笔记
#! /user/bin/env python# -*- encoding:utf-8 -*-import time,sys for i in range(31): sys.stdout.write( ...
- easyui制作进度条案例demo
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- 超赞的CSS3进度条 可以随进度显示不同颜色
原文:超赞的CSS3进度条 可以随进度显示不同颜色 现在的WEB已经不是以前的WEB了,传输更大的数据量,有着更加复杂的计算,这就需要利用进度条来提高用户体验,必要时可以让用户耐心等待,不至于因操作卡 ...
- HTML5多图片拖拽上传带进度条
前言 昨天利用css2的clip属性实现了网页进度条觉得还不错,但是很多情况下,我们在那些时候用进度条呢,一般网页加载的时候如果有需要可以用,那么问题就来了,怎么才算整个加载完毕呢,是页面主要模块加载 ...
- Google Chrome 圆形进度条
Conmajia © 2012 Updated on Feb. 21, 2018 Google Chrome 的圆形进度条. Demo 功能 显示百分比(0-100).如果进度值达到 100%,则将闪 ...
- Javascript 及 CSS3 实现进度条效果
Javascript 及 CSS3 实现进度条效果 一:css2 属性clip实现网页进度条: 在实现之前,我们先来介绍一下clip属性,因为这个属性在css2.1中很少使用到,所以我们有必要来了解 ...
- Core Animation一些Demo总结 (动态切换图片、大转盘、图片折叠、进度条等动画效果)
前一篇总结了Core Animation的一些基础知识,这一篇主要是Core Animation 的一些应用,涉及到CAShapeLayer.CAReplicatorLayer等图层的知识. 先看效果 ...
- iOS开发笔记-根据frame大小动态调整fontSize的自适应文本及圆形进度条控件的实现
最近同样是新App,设计稿里出现一种圆形进度条的设计,如下: 想了想,圆形进度条实现起来不难,但是其中显示百分比的文本确需要自适应,虽然可以使用时自己设定文本字体的大小,但是这样显得很麻烦,也很low ...
- 进度条插件使用demo
1.下载地址: http://down.htmleaf.com/1502/201502031710.zip 2.效果图: 3.HTML代码:其中80设置当前所占百分比,即蓝色部分比例:注意引入必须的j ...
随机推荐
- 多大开始玩EV3
机器人EV3还是初中生才能玩的溜 耐撕爸爸推荐年龄:初中及以上 推荐理由:无需使用计算机就可进行编程,培养孩子的编程.机械.电子.物理等综合能力. 在欧美等国家,乐高机器人融入教学已成为一种普遍现象, ...
- SourceTree工具进行提交合并代码步骤
1.先安装SourceTree工具. beyong compare工具 2.在 SourceTree工具加载beyong compare插件 1.工具.选项.比较 2.就是修改.gitconfig文件 ...
- 分享一些App常用的模块
2016年上半年 APICloud合作云服务商提供了各种类型模块多达45个 其中最新发布的重要模块有 美洽客服模块 亲加视频直播相关模块 保利威视视频播放器模块 苹果银联支付模块 贝宝支付模块 谷歌分 ...
- SQLserver 表字段修改语句
增加字段 ) 删除字段 ALTER TABLE table_NAME DROP COLUMN column_NAME 修改字段类型 ALTER TABLE table_name ALTER COLUM ...
- javascript设计模式学习之十六——状态模式
一.状态模式的定义 状态模式的关键是区分事务内部和外部的状态,事务内部状态改变往往会带来事务的行为改变. 状态模式中有意思的一点是,一般我们谈到封装,都是优先封装对象的行为,而非对象的状态.但在状态模 ...
- 解决:Detected memory leaks
最近在一个项目中,程序退出后都出现内存泄漏: Detected memory leaks!Dumping objects ->{171} normal block at 0x05785AD0, ...
- 【转】用CSS代码写出的各种形状图形的方法
一共收集整理了图形20个,比较实用,同时也为了熟悉CSS的代码.整合了一下,有错误欢迎指出. 1.正方形 #square {width: 100px;height: 100px;background: ...
- springframework开源代码导入eclipse
从毕业到现在已经3个多点年头了,开源框架也用过不少.对于j2ee开发来说,spring框架是是最流行的轻量级可选的框架之一,如果还停留在只会使用,而对源代码不研究是不行的. 话不多说 先从导入代码开始 ...
- java提高篇(九)-----详解匿名内部类
在java提高篇-----详解内部类中对匿名内部类做了一个简单的介绍,但是内部类还存在很多其他细节问题,所以就衍生出这篇博客.在这篇博客中你可以了解到匿名内部类的使用.匿名内部类要注意的事项.如何初始 ...
- iOS 工程中文件变成红色是什么情况
iOS 工程中文件变成红色是原有的文件路径改变了,系统找不到了.