本人学习笔记,参考网上代码完成

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笔记【原创】的更多相关文章

  1. sys模块进度条玩法笔记

    #! /user/bin/env python# -*- encoding:utf-8 -*-import time,sys for i in range(31): sys.stdout.write( ...

  2. easyui制作进度条案例demo

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. 超赞的CSS3进度条 可以随进度显示不同颜色

    原文:超赞的CSS3进度条 可以随进度显示不同颜色 现在的WEB已经不是以前的WEB了,传输更大的数据量,有着更加复杂的计算,这就需要利用进度条来提高用户体验,必要时可以让用户耐心等待,不至于因操作卡 ...

  4. HTML5多图片拖拽上传带进度条

    前言 昨天利用css2的clip属性实现了网页进度条觉得还不错,但是很多情况下,我们在那些时候用进度条呢,一般网页加载的时候如果有需要可以用,那么问题就来了,怎么才算整个加载完毕呢,是页面主要模块加载 ...

  5. Google Chrome 圆形进度条

    Conmajia © 2012 Updated on Feb. 21, 2018 Google Chrome 的圆形进度条. Demo 功能 显示百分比(0-100).如果进度值达到 100%,则将闪 ...

  6. Javascript 及 CSS3 实现进度条效果

    Javascript 及 CSS3 实现进度条效果 一:css2 属性clip实现网页进度条:  在实现之前,我们先来介绍一下clip属性,因为这个属性在css2.1中很少使用到,所以我们有必要来了解 ...

  7. Core Animation一些Demo总结 (动态切换图片、大转盘、图片折叠、进度条等动画效果)

    前一篇总结了Core Animation的一些基础知识,这一篇主要是Core Animation 的一些应用,涉及到CAShapeLayer.CAReplicatorLayer等图层的知识. 先看效果 ...

  8. iOS开发笔记-根据frame大小动态调整fontSize的自适应文本及圆形进度条控件的实现

    最近同样是新App,设计稿里出现一种圆形进度条的设计,如下: 想了想,圆形进度条实现起来不难,但是其中显示百分比的文本确需要自适应,虽然可以使用时自己设定文本字体的大小,但是这样显得很麻烦,也很low ...

  9. 进度条插件使用demo

    1.下载地址: http://down.htmleaf.com/1502/201502031710.zip 2.效果图: 3.HTML代码:其中80设置当前所占百分比,即蓝色部分比例:注意引入必须的j ...

随机推荐

  1. keepalived对nginx高可用演练脚本

    keepalived对nginx高可用演练脚本 参考文章:http://deidara.blog.51cto.com/400447/302402/ .安装nginx.keepalived.epel-r ...

  2. [chrome插件] 利滚利计算器 银行存款 基金理财 余额宝收益计算

    利滚利计算在数学上是否有一个简单的公式,我不知道,但作为程序员,这个算法实现起来就是小菜一碟.作为插件发布,是因为程序确实简单,也方便Chome浏览器使用者安装.如果你也想使用一下Chrome插件,参 ...

  3. 线程池——JAVA并发编程指南

    TPS00-J. 用线程池实现应用在流量暴涨时优雅降级 很多程序都要解决这样一个问题——处理一系列外来的请求.Thread- Per-Message这种设计模式是最简单的并发策略了,它为每一个请求创建 ...

  4. SpinLock 实现

    /* Example: SpinLock Description: SpinLock is the lock implementation using AtomicInteger as a primi ...

  5. JAVA类加载机制详解

    “代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是变成语言发展的一大步”,这句话出自<深入理解JAVA虚拟机>一书,后面关于jvm的系列文章主要都是参考这本书. JAV ...

  6. 为benchmarksql的PostgreSQL java驱动进行升级

    为benchmarksql的PostgreSQL java驱动进行升级[root@minion1 benchmarksql-4.1.0]# wget https://jdbc.postgresql.o ...

  7. Summary: Trie Data Structure

    Implement a Trie Data Structure, and search() & insert() function: we need to implement both Cla ...

  8. Hibernate Annotation笔记

    (1)简介:在过去几年里,Hibernate不断发展,几乎成为Java数据库持久性的事实标准.它非常强大.灵活,而且具备了优异的性能.在本文中,我们将了解如何使用Java 5 注释来简化Hiberna ...

  9. Codeforce Round #227 Div2

    这回的看错时间了! 发现理论可以涨分的- -

  10. C++之路起航——标准模板库(queue)

    queue: FIFO队列:先进先出队列. 优先队列:对队列中的元素按优先级的大小输出. 定义: FIFO队列: queue<数据类性>变量名. 优先队列:priority_queue&l ...