如何在C中随机播放一个数组

时间:2017-05-25 18:04:45

标签: c arrays

我为C项目创建了一个数字1-5的数组。 现在我想在这个数组中随机放置15个零,但我也不希望它们在数组的[0] [0]上

void setMyArray(int arr[R][C]){
int i,j,y;
int x;

for(i=0; i<R; i++){
    for(j=0; j<C; j++){
        y=rand()%5;
        arr[i][j]=y+1;
    }
}   

for(i=0; i<15; i++)  
        x=rand()%1;
        arr[i][j]=x;
}

通过这样做,我得到的只是数组开头的15个零并且没有改组。

任何人都可以帮助我更正我的代码吗?谢谢。

1 个答案:

答案 0 :(得分:0)

这里有一个可能的方法,其中包含一个关于改组阵列的小例子:

!!! 5
%html
  %head
    %meta(name="viewport" content="width=device-width, minimum-scale=1, maximum-scale=1")
    = stylesheet_link_tag "application"
    = javascript_include_tag "application"
    = render :partial => "layouts/metatag"
    - if GMAP
      = javascript_include_tag "http://maps.google.com/maps/api/js?sensor=false"
  %body
    = render :partial => "mindapp/menu"
    %div{"data-id" => "main", "data-role" => "panel", "data-backbtn"=>"false"}
      - if @cache
        - cache = {}
      - else
        - cache = {"data-cache"=>"never"}
      - if @backbtn
        - backbtn= {"data-backbtn"=>"true"}
      - else
        - backbtn= {"data-backbtn"=>"false"}
      %div{{"data-role" => "page"}.merge(cache) }
        %div{{"data-role" => "header"}.merge(backbtn)}
          %h1= @title || DEFAULT_TITLE
        %div{"data-role" => "content"}
          = yield
      = render :partial => "mindapp/static"
:javascript
  $(document).on("pagehide", 'div', function(e,ui) {
    var page = $(e.target);
    if(page.attr('data-cache') == 'never') {
      page.remove();
    };
  });
  $( document ).on( "pagechange", function(){
    $.get("/mindapp/ajax_notice", function(r) {$(r).appendTo('head').remove()});
    var meta = $(".content").text();
    if (!meta) {
      meta = "Mindapp Tools to create visual programming using mindmap"
    }
    $('meta[name=description]').attr('content', meta);
  });
/= raw handle_ma_notice

输出:

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

void shuffle(int *array, int n) {
    srand((unsigned)time(NULL));
    for (int i = 0; i < n - 1; i++) {
        size_t j = i + rand() / (RAND_MAX / (n - i) + 1);
        int t = array[j];
        array[j] = array[i];
        array[i] = t;
    }
}

#define N 6

int main() {
    int positions[N] = {0, 1, 2, 3, 4, 5};

    for (int j = 0; j < 10; j++) {
        shuffle(positions, N);
        for (int x = 0; x < N; x++) printf("%d ", positions[x]);
        printf("\n");
    }

    return 0;
}

现在,如果我们专注于您的特定示例,您想要将15个零的随机值数组混洗,您只需要首先用正整数填充数组,然后添加15个零,例如在前15个中位置然后随意改组数组,如下所示:

2 5 3 1 0 4 
3 4 1 5 2 0 
1 0 5 4 3 2 
5 2 4 0 1 3 
4 3 0 2 5 1 
0 1 2 3 4 5 
2 5 3 1 0 4 
3 4 1 5 2 0 
1 0 5 4 3 2 
5 2 4 0 1 3