Guest User

Untitled

a guest
Nov 19th, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.60 KB | None | 0 0
  1. using namespace std;
  2.  
  3. void *gen_random(void *data, const int len) {
  4. for (int i = 0; i < len; ++i) {
  5. *((unsigned char *)data + i) = rand() % UCHAR_MAX;
  6. }
  7. return data;
  8. }
  9.  
  10. void idx_sort_swap(unsigned long long &small, unsigned long long &big){
  11. unsigned long long tmp;
  12. if(small > big) {
  13. tmp = small;
  14. small = big;
  15. big = tmp;
  16. }
  17. }
  18.  
  19. char *random_manipulate(char *const source, const unsigned long long size,
  20. unsigned long long &after_size, const unsigned long long max_rand_size){
  21. stringstream ss;
  22. char *data_tmp;
  23. unsigned long long idx_tmp0, idx_tmp1, size_tmp;
  24.  
  25. after_size = 0;
  26. switch(rand() % 2){
  27. case 0:
  28. /* WRITE */
  29. idx_tmp0 = rand() % size;
  30. size_tmp = rand() % max_rand_size;
  31.  
  32. ss.write(source, idx_tmp0);
  33. after_size += idx_tmp0;
  34.  
  35. data_tmp = new char[size_tmp];
  36. gen_random(data_tmp, size_tmp);
  37. ss.write(data_tmp, size_tmp);
  38. delete data_tmp;
  39. after_size += size_tmp;
  40.  
  41. if(size > after_size) {
  42. ss.write(source + after_size, size - after_size);
  43. after_size = size;
  44. }
  45. break;
  46.  
  47. case 1:
  48. /* DELETE */
  49. idx_tmp0 = rand() % size;
  50. size_tmp = rand() % max_rand_size;
  51.  
  52. ss.write(source, idx_tmp0);
  53. after_size += idx_tmp0;
  54.  
  55. if(size - (idx_tmp1 = idx_tmp0 + size_tmp) > 0){
  56. ss.write(source + idx_tmp1, size - idx_tmp1);
  57. after_size += size - idx_tmp1;
  58. }
  59. }
  60.  
  61. char *dest;
  62. dest = new char[after_size];
  63. ss.read(dest, after_size);
  64. return dest;
  65. }
Add Comment
Please, Sign In to add comment